在spring-boot应用程序中,我在application.properties
中定义了一个变量
env=staging
这是访问变量的类,但其值为null
@Configuration
public class BeanLifecycleConfiguration {
@Value("${env}")
private String env;
@Bean
public BeanFactoryPostProcessor changeCustomComponentsToLazyInit() {
return beanFactory -> {
System.out.println(env);
// some logic
};
}
}
从注释中可以看到,System.out.println(env);
返回null
。
有没有办法获得env
的值?
答案 0 :(得分:1)
如果您将@Value("${env}") String env
作为arg添加到bean构造函数方法中,它将起作用
@Bean
public BeanFactoryPostProcessor changeCustomComponentsToLazyInit(@Value("${env}") String env) {
return beanFactory -> {
System.out.println(env);
// rest of the code
};
}
这样做,您将强制Spring在创建$Value("${env}")
bean之前处理BeanFactoryPostProcessor
带注释的值的占位符逻辑。
在您的情况下,值是null
,因为bean创建是在值插入之前进行的。