最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot相互依賴 server相互引用方式

 更新時(shí)間:2022年02月26日 09:37:43   作者:玖煦  
這篇文章主要介紹了springboot相互依賴 server相互引用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springboot相互依賴 server相互引用

public class RoleService{
	@Autowired @Lazy
	private UserServer userServer;
}
public class UserService{
	@Autowired @Lazy
	private RoleService roleService;
}

spring解決相互依賴的問(wèn)題

構(gòu)造器循環(huán)依賴

@Service
public class A {??????
public A(B b) {? }
?}
@Service
public class B {
????? public C (C c) {? }
}?
@Service
public class C {
????? public A (A a) {? }
}

通過(guò)構(gòu)造器注入構(gòu)成的循環(huán)依賴,此依賴是無(wú)法解決的,只能拋出BeanCurrentlyInCreationException異常表示循環(huán)依賴

描述:創(chuàng)建A類(lèi)是,構(gòu)造器需要B類(lèi),那將去創(chuàng)建B,在創(chuàng)建B時(shí)又發(fā)現(xiàn)需要A類(lèi),則又去創(chuàng)建C類(lèi),最終在創(chuàng)建C時(shí)發(fā)現(xiàn)又需要A,從而形成一個(gè)環(huán),沒(méi)辦法創(chuàng)建。

原理:Spring容器將每一個(gè)正在創(chuàng)建的bean標(biāo)識(shí)符放在一個(gè)“當(dāng)前創(chuàng)建bean池”中,bean標(biāo)識(shí)符創(chuàng)建過(guò)程中將一直保持在這個(gè)池中,因?yàn)槿绻趧?chuàng)建bean過(guò)程中發(fā)現(xiàn)自己已經(jīng)在“當(dāng)前創(chuàng)建bean池”中時(shí),將會(huì)拋出BeanCurrentlyInCreationException異常表示循環(huán)依賴;而對(duì)于創(chuàng)建完畢的bean將從“當(dāng)前創(chuàng)建bean池”中清除掉。

setter循環(huán)依賴

@Service
public class A1 {??????
@Autowired??????
private B1 b1; }?
@Service
public class B1 {??????
@Autowired??????
public C1 c1;
}?
@Service
public class C1 {??????
@Autowired?
public A1 a1;
?}

通過(guò)setter注入方式構(gòu)成的循環(huán)依賴。

原理:對(duì)于setter注入造成的依賴是通過(guò)Spring容器提前暴露剛完成構(gòu)造器注入但未完成其他步驟(比如setter注入)的bean來(lái)完成的,而且只能解決單例作用域的bean循環(huán)依賴。

field屬性注入循環(huán)依賴(prototype)

@Service @Scope("prototype") public class A1 {?????? 
@Autowired?????? 
private B1 b1; }? 
@Service @Scope("prototype") 
public class B1 {?????? 
@Autowired?????? 
public C1 c1; }? 
@Service @Scope("prototype") public class C1 {?? ???
?@Autowired? 
public A1 a1; }

報(bào)錯(cuò)

小結(jié)一下

Spring只能解決Setter方法注入的單例bean之間的循環(huán)依賴

ClassA依賴ClassB,ClassB又依賴ClassA,形成依賴閉環(huán)。Spring在獲取ClassA的實(shí)例時(shí),不等ClassA完成創(chuàng)建就將其曝光加入正在創(chuàng)建的bean緩存中。在解析ClassA的屬性時(shí),又發(fā)現(xiàn)依賴于ClassB,再次去獲取

ClassB,當(dāng)解析ClassB的屬性時(shí),又發(fā)現(xiàn)需要ClassA的屬性,但此時(shí)的ClassA已經(jīng)被提前曝光加入了正在創(chuàng)建的bean的緩存中,則無(wú)需創(chuàng)建新的的ClassA的實(shí)例,直接從緩存中獲取即可。從而解決循環(huán)依賴問(wèn)題。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Java實(shí)現(xiàn)在Excel中添加動(dòng)態(tài)數(shù)組公式

    使用Java實(shí)現(xiàn)在Excel中添加動(dòng)態(tài)數(shù)組公式

    動(dòng)態(tài)數(shù)組公式是?Excel?引入的一項(xiàng)重要功能,它允許用戶從單個(gè)單元格中的公式返回多個(gè)結(jié)果值,并將這些值自動(dòng)填充到與公式單元格相鄰的單元格中,本文主要介紹了如何使用Java實(shí)現(xiàn)在Excel中添加動(dòng)態(tài)數(shù)組公式,x需要的可以參考下
    2023-12-12
  • SpringBoot(JAVA)整合微信公眾號(hào)消息推送完整步驟(文本、圖片/視頻推送)

    SpringBoot(JAVA)整合微信公眾號(hào)消息推送完整步驟(文本、圖片/視頻推送)

    微信公眾號(hào)消息推送包括文本推送和圖文/視頻推送兩類(lèi),文本推送通過(guò)模板消息或自定義消息實(shí)現(xiàn),而圖文/視頻推送需先上傳素材至臨時(shí)/永久素材庫(kù),再上傳圖文消息,最后進(jìn)行消息推送,文中將實(shí)現(xiàn)的方法介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • SpringBoot?Seata?死鎖問(wèn)題排查記錄

    SpringBoot?Seata?死鎖問(wèn)題排查記錄

    這篇文章主要介紹了SpringBoot?Seata?死鎖問(wèn)題排查,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-12-12
  • Java局部?jī)?nèi)部類(lèi)和匿名內(nèi)部類(lèi)定義與用法實(shí)例分析

    Java局部?jī)?nèi)部類(lèi)和匿名內(nèi)部類(lèi)定義與用法實(shí)例分析

    這篇文章主要介紹了Java局部?jī)?nèi)部類(lèi)和匿名內(nèi)部類(lèi),結(jié)合實(shí)例形式分析了java局部?jī)?nèi)部類(lèi)和匿名內(nèi)部類(lèi)相關(guān)定義、原理與用法,需要的朋友可以參考下
    2019-08-08
  • Java中的ThreadLocal功能演示示例

    Java中的ThreadLocal功能演示示例

    這篇文章主要介紹了Java中的ThreadLocal功能演示示例,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-02-02
  • Java程序執(zhí)行cmd命令全過(guò)程

    Java程序執(zhí)行cmd命令全過(guò)程

    這篇文章主要介紹了Java程序執(zhí)行cmd命令全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Java中classpath講解及使用方式

    Java中classpath講解及使用方式

    本文詳細(xì)講解了Java中classpath講解及使用方式,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • 詳解Java如何實(shí)現(xiàn)加密或者解密PDF文檔

    詳解Java如何實(shí)現(xiàn)加密或者解密PDF文檔

    PDF文檔加密是一種用于保護(hù)文件內(nèi)容的功能。這篇文章主要介紹了Java實(shí)現(xiàn)加密或者解密PDF文檔的方法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-03-03
  • Java關(guān)于含有繼承類(lèi)的成員初始化過(guò)程講解

    Java關(guān)于含有繼承類(lèi)的成員初始化過(guò)程講解

    今天小編就為大家分享一篇Java關(guān)于含有繼承類(lèi)的成員初始化過(guò)程講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-04-04
  • 簡(jiǎn)單總結(jié)單例模式的4種寫(xiě)法

    簡(jiǎn)單總結(jié)單例模式的4種寫(xiě)法

    今天帶大家學(xué)習(xí)java的相關(guān)知識(shí),文章圍繞著單例模式的4種寫(xiě)法展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06

最新評(píng)論

万山特区| 湄潭县| 河池市| 银川市| 虞城县| 乌兰浩特市| 丰镇市| 昭平县| 吉木萨尔县| 茶陵县| 施秉县| 大丰市| 玉溪市| 浦东新区| 平陆县| 通许县| 德昌县| 台湾省| 水富县| 抚松县| 五寨县| 康保县| 吉木乃县| 章丘市| 嘉祥县| 如皋市| 微山县| 怀远县| 张家口市| 桃源县| 辉县市| 北辰区| 延津县| 阿拉善左旗| 锡林浩特市| 城步| 玛纳斯县| 鸡泽县| 云南省| 福鼎市| 陵川县|