欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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解決相互依賴的問題

構(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) {? }
}

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

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

原理:Spring容器將每一個(gè)正在創(chuàng)建的bean標(biāo)識(shí)符放在一個(gè)“當(dāng)前創(chuàng)建bean池”中,bean標(biāo)識(shí)符創(chuàng)建過程中將一直保持在這個(gè)池中,因?yàn)槿绻趧?chuàng)建bean過程中發(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;
?}

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

原理:對(duì)于setter注入造成的依賴是通過Spring容器提前暴露剛完成構(gòu)造器注入但未完成其他步驟(比如setter注入)的bean來完成的,而且只能解決單例作用域的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的緩存中,則無需創(chuàng)建新的的ClassA的實(shí)例,直接從緩存中獲取即可。從而解決循環(huán)依賴問題。

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

相關(guān)文章

  • spring boot使用WebClient調(diào)用HTTP服務(wù)代碼示例

    spring boot使用WebClient調(diào)用HTTP服務(wù)代碼示例

    這篇文章主要介紹了spring boot使用WebClient調(diào)用HTTP服務(wù)代碼示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • java防反編譯最簡(jiǎn)單的技巧分享

    java防反編譯最簡(jiǎn)單的技巧分享

    這篇文章主要給大家分享了關(guān)于java防反編譯最簡(jiǎn)單的技巧,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • Spring常用注解及http數(shù)據(jù)轉(zhuǎn)換教程

    Spring常用注解及http數(shù)據(jù)轉(zhuǎn)換教程

    這篇文章主要為大家介紹了Spring常用注解及http數(shù)據(jù)轉(zhuǎn)換原理以及接收復(fù)雜嵌套對(duì)象參數(shù)與Http數(shù)據(jù)轉(zhuǎn)換的原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • SpringBoot 中實(shí)現(xiàn)跨域的5種方式小結(jié)

    SpringBoot 中實(shí)現(xiàn)跨域的5種方式小結(jié)

    這篇文章主要介紹了SpringBoot 中實(shí)現(xiàn)跨域的5種方式小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Java IO流之字節(jié)輸入流的使用詳解

    Java IO流之字節(jié)輸入流的使用詳解

    這篇文章主要為大家詳細(xì)介紹了Java IO流中字節(jié)輸入流的使用,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定的幫助,需要的可以參考一下
    2022-08-08
  • Java 內(nèi)部類的定義與范例

    Java 內(nèi)部類的定義與范例

    說起內(nèi)部類這個(gè)詞,想必很多人都不陌生,但是又會(huì)覺得不熟悉。原因是平時(shí)編寫代碼時(shí)可能用到的場(chǎng)景不多,用得最多的是在有事件監(jiān)聽的情況下,并且即使用到也很少去總結(jié)內(nèi)部類的用法。今天我們就來一探究竟
    2021-11-11
  • java實(shí)現(xiàn)在普通類中注入service或mapper

    java實(shí)現(xiàn)在普通類中注入service或mapper

    這篇文章主要介紹了java實(shí)現(xiàn)在普通類中注入service或mapper的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java集合和數(shù)組的區(qū)別

    Java集合和數(shù)組的區(qū)別

    本文主要介紹了Java集合和數(shù)組的區(qū)別。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • 詳解mybatis.generator配上最新的mysql 8.0.11的一些坑

    詳解mybatis.generator配上最新的mysql 8.0.11的一些坑

    這篇文章主要介紹了詳解mybatis.generator配上最新的mysql 8.0.11的一些坑,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • SpringBoot之如何指定配置文件啟動(dòng)

    SpringBoot之如何指定配置文件啟動(dòng)

    這篇文章主要介紹了SpringBoot之如何指定配置文件啟動(dòng)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2023-04-04

最新評(píng)論