1. 程式人生 > >Spring Bean中迴圈依賴解決方案

Spring Bean中迴圈依賴解決方案

在迴圈依賴是指在A中引用B,B中引用C,而C中引用A,容器建立物件時會出現死迴圈。相關解決方案如下:
1 選擇其一使其延遲載入,然後從上下文中獲取AService型別的bean即可。

現有AService 和BService,都在對方bean中注入,導致初始化時迴圈初始報錯,解決方案就是選擇其一使其延遲載入。用配置方式只要將其一設定lazy-init。
2.使用@Resouce或@Autowire方式自動注入的,將其一去掉自動注入註解(或者兩個都去掉),使其在建立物件時不進行自動注入,而是在使用前從IOC容器中獲取。
程式碼:
synchronized (AService .class) {
if (aService== null) {
synchronized (AService .class) {
aService= applicationContext.getBean(AService .class);
}
}
}
3.將構造注入改為屬性注入
4…對於"singleton"作用域bean,可以通過"setAllowCircularReferences(false);"來禁用迴圈引用。