繁体   English   中英

Spring bean 后处理器:注入一个值

[英]Spring bean post processor: inject a value

我有一个 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 中并且它工作正常,所以它肯定必须与 bean 做一些事情,因为 bean 是 BeanPostProcessor。
有没有办法以某种方式注入价值? 我正在使用 Spring Boot 2.2.0。

这是有意的。 请参阅@Value文档

请注意,@Value 注释的实际处理是由 BeanPostProcessor 执行的,这反过来意味着您不能在 BeanPostProcessor 或 BeanFactoryPostProcessor 类型中使用@Value。 请查阅 AutowiredAnnotationBeanPostProcessor 类的 javadoc(默认情况下,它会检查此注释是否存在)。

作为解决方法,例如,您可以在标记为@Configuration的类中手动将后处理器创建为 bean,并将该值作为构造函数参数从那里传递。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM