最近发现一个问题
Linux 服务器通过 maven 打出来的部分项目,部署的时候会出现循环依赖报错 但是同样的代码,在 Windows 机器上打出来的 jar 包,部署在相同服务器上不会有循环依赖的报错 没有问题的项目中,也有部分存在循环依赖,但是也能正常部署,只有极个别的项目有上述的问题。
springboot 版本 2.0.5 jdk 1.8
Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'applyServiceImpl': Bean with name 'applyServiceImpl' has been injected into other beans [contractServiceImpl] in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using 'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example
1
suwu 298 天前
给个 dome ?
|
2
BBCCBB 298 天前
这个说不准的, 和他的加载顺序也有关系..
有时候不同的机器可能就会出现.. A 机器没问题, B 机器可能就出现了. 要么梳理代码, 避免循环依赖, 不过这个一般不可能, 要么就是 @Lazy 大法.. |
3
yichengxian 298 天前 3
你这个啊 @Lazy 大法好啊
|
4
nodododo 298 天前 1
我记得我也遇到过,就是运行环境的加载顺序问题,因为 win 和 linux 的路径是不一样的,所以加载顺序导致了循环依赖的出现
|
5
hengyunabc 298 天前
升个高版本点的 spring boot 应该可以解决,它会保存依赖 jar 的顺序,避免不同环境加载 jar 顺序不一致。
|
7
ychost 298 天前
这很正常的,代码里面循环依赖加个 Lazy 吧,我也遇到过本地能启动线上报错的情况,Spring 对 Bean 的加载 顺序是不定的
|
8
bsg1992 298 天前
循环依赖这种情况 就应该避免。
|