閱讀spring源碼時,糾結(jié)于以下這段代碼渔嚷,網(wǎng)上查詢了一波,特意記錄以下
ignoreDependencyInterface(BeanNameAware.class);
ignoreDependencyInterface(BeanFactoryAware.class);
ignoreDependencyInterface(BeanClassLoaderAware.class);
怎么理解這個操作呢?
照理說稠曼,如果A的B類型屬性形病,不需要spring幫我們注入的話,我們可以不在B屬性上加@Autowired或者@Resource注解蒲列。
但是窒朋,xml有個配置,default-autowire="byType"蝗岖,全局有效的侥猩,這時候A的屬性B即使沒有@Autowired或者@Resource注解,也會注入
此時如果A類中抵赢,又有setB的方法欺劳,且ignoreDependencyInterface(B.class); 則自動注入B唧取,由setB方法來設置B
如果,沒有setB方法划提,那還是會注入
所以ignoreDependencyInterface方法在真正作用是: 忽略該接口的實現(xiàn)類中和接口setter方法入?yún)㈩愋拖嗤囊蕾嚒?br>
至于為什么要忽略枫弟,通過set方法來注入,暫時不太清楚
查詢相關(guān)資料的鏈接:
http://www.reibang.com/p/3c7e0608ff1f?from=singlemessage
https://blog.csdn.net/GoSaint/article/details/85010300