正常写的代码
@Value("${Test.phone}")
private String phoneOld;
application.yml文件
# 测试Value数据
test:
Phone: 16688887777
怎样才能取到值
// 注意在类上边一定要加Component注解
@Component
public class TestValue{
@Value("${test.Phone}")
private String phoneOld;
private static String phoneNew = null;
@PostConstruct
private void init() {
phoneNew = phoneOld;
}
/**
* 获取此字段值
*/
public String getCarOwnerIdno() {
log.info("=== 测试数据值:{} ===", phoneNew) ;
}
}
扩展
主要是PostConstruct注解的作用,在这里简单说一下:
如果想在生成对象时完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入,就无法在构造函数中实现。为此,可以使用@PostConstruct
注解一个方法来完成初始化,@PostConstruct
注解的方法将会在依赖注入完成后被自动调用。
以下可以理解为加载顺序
Constructor → @Autowired → @PostConstruct
先执行完构造方法,再注入依赖,最后执行初始化操作,所以这个注解就避免了一些需要在构造方法里使用依赖组件而导致执行顺序不一致的问题。