Java通過反射加載的類中的變量無法注入的解決辦法

在Java中定義一個類婆排,類中注入了一個service,代碼如下:

@Component
public class AffairIdHandler implements PropertyHandler {

    @Autowired
    private AffairService affairService;

    @Override
    public JSONObject handle(JSONObject auditData, String handleKey) {
        Long affairId = auditData.getLong(handleKey);
        JSONObject affair = new JSONObject();
        //......
        return affair;
    } 
}

但是由于AffairIdHandler需要通過反射動態(tài)地加載哑子,使用它的類不是通過注入的方式獲取實例的饶套,導致AffairService無法由spring自動注入芒填,因為AffairIdHandler已經(jīng)脫離spring的管理空繁,所以affairService變量為null盛泡,具體的解決辦法如下:

@Service
public class OperationService {

    @Autowired
    private ApplicationContext context;

    public List<JSONObject> handleProperties(KeyMapper.Operation operation, JSONObject auditData) {
        List<JSONObject> form = new ArrayList<>();
        Map<String, KeyMapper.Operation.Property> properties = operation.getProperties();
        for (Map.Entry<String, KeyMapper.Operation.Property> entry : properties.entrySet()) {
            //......
            if (handlerUrl == null) {
                component.put("value", auditData.get(key));
            } else {
                try {
                    Class<?> handler =  Class.forName(handlerUrl);
                    PropertyHandler propertyHandler = (PropertyHandler)context.getAutowireCapableBeanFactory()
                                        .createBean(handler, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, true);
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }

            }
            form.add(component);
        }
        return form;
    }

}

即使用ApplicationContext獲取AutowireCapableBeanFactory示例箱硕,并通過AutowireCapableBeanFactory的實例的createBean()方法來創(chuàng)建bean剧罩,那么AffairIdHandler類中使用@Autowired注入的變量就可以自動注入斑响。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末纽门,一起剝皮案震驚了整個濱河市赏陵,隨后出現(xiàn)的幾起案子蝙搔,更是在濱河造成了極大的恐慌吃型,老刑警劉巖勤晚,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異挺邀,居然都是意外死亡端铛,警方通過查閱死者的電腦和手機乳蓄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門美侦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來菠剩,“玉大人,你說我怎么就攤上這事准颓∪烈眩” “怎么了样勃?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長辫樱。 經(jīng)常有香客問我狮暑,道長暇赤,這世上最難降的妖魔是什么鞋囊? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任瓜喇,我火速辦了婚禮歉糜,結果婚禮上匪补,老公的妹妹穿的比我還像新娘蚤氏。我一直安慰自己竿滨,他們只是感情好于游,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布鸠澈。 她就那樣靜靜地躺著笑陈,像睡著了一般葵袭。 火紅的嫁衣襯著肌膚如雪涵妥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天坡锡,我揣著相機與錄音蓬网,去河邊找鬼。 笑死鹉勒,一個胖子當著我的面吹牛帆锋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播禽额,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼锯厢,長吁一口氣:“原來是場噩夢啊……” “哼皮官!你這毒婦竟也來了?” 一聲冷哼從身側響起实辑,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤捺氢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后剪撬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體摄乒,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年残黑,在試婚紗的時候發(fā)現(xiàn)自己被綠了馍佑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡梨水,死狀恐怖挤茄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情冰木,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布笼恰,位于F島的核電站踊沸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏社证。R本人自食惡果不足惜逼龟,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望追葡。 院中可真熱鬧腺律,春花似錦、人聲如沸宜肉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谬返。三九已至之斯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間遣铝,已是汗流浹背佑刷。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留酿炸,地道東北人瘫絮。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像填硕,于是被迫代替她去往敵國和親麦萤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)频鉴,斷路器栓辜,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,748評論 6 342
  • 來源:關于Spring IOC (DI-依賴注入)你需要知道的一切作者:zejian Dao層(AccountDa...
    楊井閱讀 5,326評論 0 27
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法垛孔,內(nèi)部類的語法藕甩,繼承相關的語法,異常的語法周荐,線程的語...
    子非魚_t_閱讀 31,581評論 18 399
  • 每個人都在專心的做事情狭莱,每天的世界都如此美好,而我概作,在做什么腋妙? 公司的事情雖然有點波折,但還是要運作起來的讯榕。這是今...
    筆涯閱讀 337評論 0 2