项目B中引入外部项目A的jar,在A中有一个变量上加了@value,无法获取当前应用中的一个配置属性

来源:4-14 完全自动装配

troylc

2019-08-25

我在A项目中写的API,在这个API中的一个类上定义的一个属性变量,变量上带有@value注解,如:
A项目中的API类:
图片描述
然后我把这个A项目打成jar包,再到B项目中引入A项目的这个API,再到B项目的配置文件中配置saas.common.api.url这个属性的值
图片描述
结果在系统启动的时候,实例化这个类时,获取不到这个属性的值
图片描述
AB两个项目不是父子项目,
但是当B项目系统启动后,我在controller中用这个 @Value("${saas.common.api.url}"),又能获取到值,为什么系统启动的时候在B项目中的A项目的jar包中的类无法获取到这个属性?

请问,这是为什么?还有遇到这样的问题,以什么样的思路去找问题,这问题折腾了一天,没找到原因,也无头绪,实在是无解,请教请教,谢谢

写回答

1回答

troylc

提问者

2019-08-25

在QQ群里,大家给出了解决方案,这是一个bean初始化顺序的问题。

解决方案:

          写一个初始化的方法,在方法上加上@PostConstruct注解,如:

          //img1.sycdn.imooc.com/szimg/5d629ffb0928b76c15260330.jpg

         被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行

0
0

Spring Boot2.0深度实践 核心原理拆解+源码分析

系统化剖析Spring Boot 2.0,掌握技术原理,学习源码阅读技巧

2908 学习 · 213 问题

查看课程