私はこの問題を解消しています。私が何が欠けているか分からない。私は(非ウェブ)Spring 3.2 Javaの純粋な設定の@valueアノテーションは機能しませんが、Environment.getPropertyが機能します
@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;
}
}
プロパティファイルがちょうど含まれてい@Value
注釈は純粋なJava構成された春のアプリで動作するように取得することができませんmy.prop=avalue
Beanは次のとおりです。
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);
私はこのスニペット
<context:property-placeholder location="app.properties" />
で
@ImportResource("classpath:property-config.xml")
を使用する場合は、それが正常に動作します。もちろん、環境はnull
です。
これは素晴らしい機能でした!春のdoc @Configurationはこれを逃してしまいます。このすべての混乱を導く – Abe
+1 - 恥ずかしくて、私はいつも新しいプロジェクトを始めるときにこれを忘れているようだ。 – Bukes
Beanを「静的」として登録することが私の鍵です。ありがとう。 – Arpit