byName是怎么完成自動裝配的?set方法是什么時候被調用的?
byName中的set方法是自動被調用的么?怎么實現的?
執行 InjectionService service = super.getBean("injectionService"); 是不是就同時執行了
public?void?setInjectDao(injectDao?injectDao)?{ ??????this.injectDao?=?injectDao; }
byName中的set方法是自動被調用的么?怎么實現的?
執行 InjectionService service = super.getBean("injectionService"); 是不是就同時執行了
public?void?setInjectDao(injectDao?injectDao)?{ ??????this.injectDao?=?injectDao; }
2016-12-13
舉報
2016-12-13
執行流程是:
加載spring配置文件。
通過構造方法獲取service類的實例。(這里獲取到實例還沒有執行Dao中的方法)
通過service實例調用service的方法,service中的方法調用Dao的方法,在service中通過私有化Dao類的屬性和set方法注入了Dao類。這里的set方法的參數就是ByName執行的關鍵,在調用了service方法時會通過這個set方法的參數名去spring配置文件中找id和參數名稱一致的bean。找到后就裝配這個bean對應的Dao類。
也就是說你set方法中的參數名injectDao必須要和spring配置文件中的id一樣,否則會找不到。
ByType的話就跟id沒有關系,會找類型一致的去加載。
2017-01-18
public void testSay() {
?? ??? ?AutoWiringService service = super.getBean("autoWiringService");
?? ??? ?service.say(" this is a test");
?? ?}
super.getBean("autoWiringService");這個怎么理解,是什么意思
2016-12-13
我也是在學習,有更深入的理解的話可以互相分享。嘿嘿