反射生成的類無法進行自動注入的解決方案

2021-09-26 22:40:33 字數 780 閱讀 2705

之前我有乙個設計,需要設定乙個靈活的過濾規則,但考慮到各部門之間的過濾規則過於繁複,依靠個人能力完全無法在短時間內完成,因此我寫了乙個介面,讓使用者通過實現介面來實現他們自己的過濾規則。

設計就是讓使用者通過實現該介面,並在我的配置檔案裡寫他們的類路徑,我通過反射生成這個類,並載入進我的方法。然後,問題發生了:在這個類中,無法進行spring工廠注入

spring自動注入物件原理

解決的原理1:新建乙個類baselocator:

public class baselocator implements beanfactoryaware 

public beanfactory getfactory()

public static baselocator getinstance()

}

那麼這個bean,怎麼獲取呢,你可以在配置類裡進行bean,或者在配置檔案裡進行配置:

2:配置bean

@bean

public baselocator getbaselocator()

3:再建乙個類baseautoaware:

public class baseautoaware 

private beanfactory retrievebeanfactory()

}

4:在被注入的容器類中加@data註解,並不需要加@conpoment註解,也不要在被注入的屬性值加@autowire

反射生成的類無法進行自動注入的解決方案

核心思想是無法自動注入就自己手動new 和單例模式寫法一致 建立乙個私有的屬性 private waybillutils waybillutils 提供乙個 override public r check list waybillvo check 這樣就能用new出來的類了 用過載的方式寫方便 重用...

PHP基於反射機制實現自動依賴注入的方法詳解

依賴注入又叫控制反轉,使用過框架的人應該都不陌生。很多人一看名字就覺得是非常高大上的東西,就對它望而卻步,今天抽空研究了下,解開他它的神秘面紗。廢話不多說,直接上 工具類,使用該類來實現自動依賴注入。class ioc 執行類的方法 param type classname 類名 param typ...

java 反射機制(Field)對類的字段進行操作

設定變數setfield field userinfo.getclass getdeclaredfield name 私有變數set需呼叫此方法 field.setaccessible true 字元型別名稱 string fieldtypename field.gettype get name 暫...