【发布时间】:2019-11-28 12:09:41
【问题描述】:
我有一个 BeanPostProcessor bean,我想用 application.properties 文件中的值注入两个字符串变量。但是,它们不会被注入并留下占位符的值。
@Component
public class MyBeanPostProcessor implements BeanPostProcessor {
@Value("${property1}")
private String property1;
@Value("${property2}")
private String property2;
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
...
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
...
return bean;
}
}
在这两种方法中,变量的值都是${property1} 和${property2}。
我已经尝试将它们注入到一个普通的 bean 中并且它工作正常,所以它肯定必须对 BeanPostProcessor 的 bean 做一些事情。
有没有办法以某种方式注入价值?我正在使用 Spring Boot 2.2.0。
【问题讨论】:
-
您是否尝试将它们注入到 另一个 类中,然后使该类成为
BeanPostProcessor的依赖项?可能是spring在之前创建了bean后处理器,无论它是检索@Value。 -
刚试了一下,值还是用占位符填充的。但是,有一个解决方法 - 我为这些道具制作了一个 @ConfigurationProperties bean,它会自动装配到具有已填充值的 bpp bean。感谢您的提示!
标签: java spring spring-boot