Spring 3.2 @value纯java配置的注释不起作用,但Embion.getProperty工作
我一直在打破我的头。不知道我错过了什么。我无法让注释在纯java配置的spring应用程序(非web)中工作@Value
@Configuration
@PropertySource("classpath:app.properties")
public class Config {
@Value("${my.prop}")
String name;
@Autowired
Environment env;
@Bean(name = "myBean", initMethod = "print")
public MyBean getMyBean(){
MyBean myBean = new MyBean();
myBean.setName(name);
System.out.println(env.getProperty("my.prop"));
return myBean;
}
}
属性文件只包含 Bean,如下所示:my.prop=avalue
public class MyBean {
String name;
public void print() {
System.out.println("Name: " + name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
环境变量正确打印值,但不会。@Value
avalue
Name: ${my.prop}
主类只是初始化上下文。
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(Config.class);
但是,如果我使用
@ImportResource("classpath:property-config.xml")
使用此代码段
<context:property-placeholder location="app.properties" />
然后它工作正常。当然,现在环境又回来了。null