Spring 3.0.5.RELEASEでBeanにプロパティを自動ワイヤリングしようとすると、次のように使用します:
config.properties
:
username=myusername
main-components.xml
:
<context:property-placeholder location="classpath:config.properties" />
私のクラス:
@Service
public class MyClass {
@Value("${username}")
private String username;
...
}
その結果、ユーザー名は文字通り"${username}"
に設定されるため、式は解析されません。このクラスに対する他の自動ワイヤード依存関係が設定され、Springは例外をスローしません。 @Autowired
も追加しようとしましたが、効果がありませんでした。
プロパティを個別のBeanに解析してから@Autowired
+ @Qualifier
を使用すると、機能します。
<bean id="username" class="Java.lang.String">
<constructor-arg value="${username}"/>
</bean>
@Value
の使い方のアイデアはありますか?たぶん、私が持っていないいくつかのSpring依存関係を含める必要がありますか?ありがとうございました
問題が何であるかを見つけました。コメントからコピー/貼り付け:
<context:property-placeholder>
(親コンテキストではなく)MyClass Beanと同じアプリケーションコンテキストで? – axtavt
あなたが正しい。引っ越した <context:property-placeholder>
は、ContextLoaderListener
によって定義されたコンテキストからサーブレットコンテキストへ。これで私の値が解析されます。どうもありがとう! -アレックス