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

spring使用三級緩存解決循環(huán)依賴的情況

 更新時(shí)間:2025年09月10日 09:40:26   作者:java葉新東老師  
Spring 2.6后默認(rèn)禁用循環(huán)依賴,啟動(dòng)時(shí)報(bào)錯(cuò);可通過@Lazy注解或配置啟用,三級緩存分別存儲(chǔ)完整Bean、部分注入對象和未注入對象,解決依賴注入問題

前言

在spring 2.6之前的版本中,默認(rèn)都是支持循環(huán)依賴的,也就不會(huì)報(bào)錯(cuò),在2.6版本之后默認(rèn)禁用了循環(huán)依賴;可通過以下方式開啟循環(huán)依賴

spring:
  main:
    allow-circular-references: true # 開啟循環(huán)依賴, false (默認(rèn))表示禁用循環(huán)依賴

復(fù)現(xiàn)

比如有以下2個(gè)類,A引用了B,B引用了A;

  • A.java
@Service
public class B{
 @Autowried
  private B b;
}
  • B.java
@Service
public class B{
 @Autowried
  private A a;
}

默認(rèn)情況下啟動(dòng)spring就會(huì)拋出循環(huán)依賴的異常

***************************
APPLICATION FAILED TO START
***************************

Description:

The dependencies of some of the beans in the application context form a cycle:

┌─────┐
|  a (field private com.spring.service.B com.spring.service.A.b)
↑     ↓
|  b (field private com.spring.service.A com.spring.service.B.a)
└─────┘


Action:

Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true.

三級緩存

先說下三級緩存的作用

  • 一級緩存:存放實(shí)例化且屬性已注入完成的Bean(完整對象)
  • 二級緩存:存放不完整的對象(屬性已注入了一部分,未全部注入完成)
  • 三級緩存:存放剛實(shí)例化的空對象(屬性未注入)

  • 三級緩存的執(zhí)行流程如下:

解決

這里有2種解決方案

1、添加懶加載注解 @Lazy

用法如下

@Service
public class B {

    @Autowired
    @Lazy
    private A a;
}

2、啟用循環(huán)依賴的配置

在application.yml 文件加上以下配置即可

spring:
  main:
    allow-circular-references: true

總結(jié)

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

相關(guān)文章

最新評論

新田县| 天镇县| 天全县| 南安市| 吉木萨尔县| 白河县| 额济纳旗| 民县| 随州市| 白朗县| 游戏| 铅山县| 新化县| 黄石市| 临澧县| 浦县| 鹤峰县| 金湖县| 阳曲县| 东乌珠穆沁旗| 南郑县| 澳门| 仲巴县| 台中市| 中卫市| 英德市| 宜兴市| 六盘水市| 长沙县| 孝义市| 永寿县| 樟树市| 保定市| 若尔盖县| 浮梁县| 邢台市| 四川省| 金平| 什邡市| 寻甸| 普宁市|