解决Spring 因加载顺序问题 获取配置类属性为null 问题

68 阅读1分钟

解决办法

通过 @DependsOn 注解来设置 spring bean 加载顺序,它可以指定依赖哪个 bean ,让自己在该 bean 之后加载。这样就可以实现 bean 顺序的设置。

ErlangNode 类依赖 ErlangConfig 、DeviceConfig 类,需要在 ErlangConfigDeviceConfig加载完成后执行:

@DependsOn 可以指定多个 bean ,用 String[] 表示,有顺序。@DependsOn({"erlangConfig", "deviceConfig"}) 表示在执行 ErlangNode.java 之前,会首先执行 ErlangConfig.java,然后再执行 DeviceConfig.java。bean 名称默认为 首字母小写的类名。

总结

@Configuration@Service@Component 都会将修饰的类交给 spring 来管理,但就注解这个层面来说,貌似是没有加载顺序的。默认为 包名+文件名 来判断加载顺序。如果需要指定加载顺序,可以使用 @DependsOn 注解。