为什么在本地可以,上了测试环境就不行,或者上了生产环境就不行了?
答:根源在于在不同的操作系统或者环境下, bean 的加载顺序是不固定的。bean 加载顺序变化之后,就可能会导致循环依赖报错问题产生!因为,顺序变化之后,循环依赖的主体变了!
bean 加载时,会先将所有的 BeanDefinition 扫描出来,扫描出来的顺序基本上就决定了 bean 的加载顺序。
扫描 BeanDefiniton 的方法是 ClassPathScanningCandidateComponentProvider#scanCandidateComponents(),这个方法在不同的环境下扫描出类的顺序是不固定的。
它的底层走的是 java.lang.ClassLoader#getResources() ,这个方法没有承诺获取到资源文件的顺序!
Original: https://www.cnblogs.com/kevin-yuan/p/14764551.html
Author: 快鸟
Title: spring bean 循环依赖问题,在本地环境可以,测试环境报循环依赖问题
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/540331/
转载文章受原作者版权保护。转载请注明原作者出处!