亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

byName是怎么完成自動裝配的?set方法是什么時候被調用的?

byName中的set方法是自動被調用的么?怎么實現的?

執行 InjectionService service = super.getBean("injectionService"); 是不是就同時執行了

public?void?setInjectDao(injectDao?injectDao)?{
??????this.injectDao?=?injectDao;
}


正在回答

3 回答

執行流程是:

  1. 加載spring配置文件。

  2. 通過構造方法獲取service類的實例。(這里獲取到實例還沒有執行Dao中的方法)

  3. 通過service實例調用service的方法,service中的方法調用Dao的方法,在service中通過私有化Dao類的屬性和set方法注入了Dao類。這里的set方法的參數就是ByName執行的關鍵,在調用了service方法時會通過這個set方法的參數名去spring配置文件中找id和參數名稱一致的bean。找到后就裝配這個bean對應的Dao類。

也就是說你set方法中的參數名injectDao必須要和spring配置文件中的id一樣,否則會找不到。

ByType的話就跟id沒有關系,會找類型一致的去加載。

0 回復 有任何疑惑可以回復我~
#1

未卜先知 提問者

非常感謝!這樣思路就清晰了
2016-12-13 回復 有任何疑惑可以回復我~
#2

Zuoxianyong

我覺得方法名要一致 而不是參數 你可以試試
2017-08-07 回復 有任何疑惑可以回復我~

public void testSay() {
?? ??? ?AutoWiringService service = super.getBean("autoWiringService");
?? ??? ?service.say(" this is a test");
?? ?}

super.getBean("autoWiringService");這個怎么理解,是什么意思



0 回復 有任何疑惑可以回復我~
#1

未卜先知 提問者

從容器中獲取id的autoWiringService實例
2017-01-22 回復 有任何疑惑可以回復我~

我也是在學習,有更深入的理解的話可以互相分享。嘿嘿

0 回復 有任何疑惑可以回復我~
#1

未卜先知 提問者

這幾天重新回顧并且驗證下了,似乎和以前想的不一樣,應該不是在執行方法的時候注入的,而是在創建上下文的時候就全部完成了
2017-01-05 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

byName是怎么完成自動裝配的?set方法是什么時候被調用的?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號