Spring 循环依赖:本地不报错,线上却报错

Spring About 289 words

现象

本地启动Spring Boot时,没有报循环依赖错误,程序正常启动。

线上环境报循环依赖错误,程序无法启动。

原因

不同的操作系统,bean的加载顺序是不固定的。

扫描BeanDefiniton的方法是ClassPathScanningCandidateComponentProvider#scanCandidateComponents(),这个方法在不同的环境下扫描出类的顺序是不固定的。

因为底层是走的java.lang.ClassLoader#getResources()

解决方法

方法一

去掉循环依赖。(往往是构造方法方式注入)

方法二

添加@Lazy注解。

Views: 1,299 · Posted: 2023-07-06

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓
Today On History
Browsing Refresh