前段时间使用
Spring Boot
在开发一个需求,要求将一些参数做成可配置化的,于是顺理成章地将参数放入
application.properties
文件中。
YD.APP_ID=app20
要获取
application.properties
中的属性值,最简单的方式是使用
@Value
注解
@Value("${YD.APP_ID}")
private String appId;
这个时候我有一个类 App,它有一个构造方法会初始化一些东西,并使用到
appId
这个属性值
@Repository
public class App{
@Value("${YD.APP_ID}")
private String appId;
public App(){
// ...init
print(appId);
}
}
这里会打印
appId
的值为
null
,原因是
属性注入发生在构造方法之后
。
这种问题其实很困扰人的,如果你对 Java 的类加载机制和创建对象过程比较熟悉的,可能很快就能明白原因在那里。
版权声明:本文为mkii_hong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。