問題:is there an unresolvable circular reference?
這是我在Jpa+Mybatis+多數(shù)據(jù)源結(jié)合的時(shí)候出現(xiàn)的問題,這個(gè)問題在SpringBoot項(xiàng)目啟動(dòng)的時(shí)候命锄,能正常啟動(dòng)成功堰乔。但是當(dāng)運(yùn)行Service層的單元測試時(shí),卻運(yùn)行不起來脐恩。
Google了一下有些Solution不用構(gòu)造或者直接注入镐侯,但是不適合解決我的問題。
我使用的是找到循環(huán)注入的兩個(gè)Bean,使用 @Lazy 注解標(biāo)志其中一個(gè)為懶加載苟翻,這樣則可避免循環(huán)引用韵卤。
Spring內(nèi)部代碼是當(dāng)解析依賴注入關(guān)系的時(shí)候,先判斷是不是 @Lazy Bean崇猫,如果是沈条,則暫不解析該依賴,如果不是則會(huì)進(jìn)行依賴Bean的查找诅炉,如果查找不到則會(huì)創(chuàng)建蜡歹。但是在創(chuàng)建的時(shí)候,由于和需要注入的Bean有循環(huán)依賴關(guān)系涕烧,所以注入Bean創(chuàng)建失敗月而。