本地环境和生产环境均为按文件目录顺序加载
测试sit和uat环境则不知道按什么顺序加载
前提是有一个@configutation修饰类,有A和B两个bean B依赖A
有C D两个@component修饰的类
C依赖于A D依赖于B
本地和生产环境均按目录顺序加载,先加载D后加载C,故B方法中出现空指针异常,因为A未进行初始化。目前解决方法可以直接在B上加一个dependon注解可以解决
问题就是,为什么测试环境下,C先于D加载了,于是导致即使B上无任何注解,也会先加载A,B后续顺利加载。
求帮忙分析
测试环境和生产环境用的基础包一致。代码,jdk,操作系统版本均一致
spring的bean加载顺序是不确定的,B 直接依赖A,A才会确定先于B加载;
对于某些必须先加载某些bean的可以通过@DependsOn注解来指定。