我正在尝试将属性文件中的值注入spring配置类,如下所示:
@Configuration
@EnableWebMvc
public class ImagesContext {
@Autowired
@Value("${some.property.com}")
private String property;
@Bean
public MyClass getMyClass() {
return new MyClass(property);
}
}
但该属性未正确注入。相反,当我调试时,我看到property
字符串包含${some.property.com}
而不是字符串值本身。
答案 0 :(得分:13)
@Value
注释由AutowiredAnnotationBeanPostProcessor
处理,如果您在XML中具有<component-scan>
或<annotation-config>
配置(或直接使用bean定义),则通常会注册<annotation-config>
注释。您需要添加其中任何一个,可能是@Bean
public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
如果尚未完成,请在Config类中添加以下bean声明
@Value
要使PropertySourcesPlaceholderConfigurer
注释工作<context:property-placeholder>
,应注册。它在XML中使用@Bean
时自动完成,但在使用@Configuration
时应注册为静态{{1}}。