ApplicationContext.xmlにあります
<context:property-placeholder location="classpath*:*.properties" />
<bean id="clientPreferencesManager" class="pl.bildpresse.bildchat2.business.ClientPreferencesManager" >
<property name="clientApiUrl" value="${clientapi.url}" />
</bean>
Autowireで同じことをすることは可能ですか?何かのようなもの :
@Autowired
@Qualifier("${clientapi.url}")
public void setClientApiUrl(String clientApiUrl) {
this.clientApiUrl = clientApiUrl;
}
@Value
を使用できます:
@Value("${clientapi.url}")
public void setClientApiUrl(String clientApiUrl) {
this.clientApiUrl = clientApiUrl;
}
なぜ機能しなかったのかを理解するのに時間がかかりました。私はいつも#
の代わりに$
。私はいつもメッセージを受け取りました:
EL1008E:(pos 0): Field or property 'secretkey' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext'
変更する必要がありました:
@Value("#{secretkey}')
に
@Value('${secretkey}')
これが誰かの時間を節約することを願っています。
OK。わかった。次のような@Autowiredを追加する必要があります。
@Autowired
@Value("${clientapi.url}")
private StringValueResolver resolver;
Spring 3.0.0.RELEASEを使用しています
乾杯
春3.0の場合、正しい方法は次のとおりです-@Value("${expression}")
を使用する
3.0より前の春の場合、次を試すことができます。
@Autowired
private StringValueResolver resolver;
ここにはコンテキスト初期化の問題はありませんでしたが、うまくいくかどうかはわかりません。リゾルバーを使用して、プロパティを解決できます。
私の解決策は
<context:property-override location="classpath:clientapi.properties" />
そしてclientapi.properties file
clientPreferencesManager.clientApiUrl=http://localhost:8084/ClientAPI/resources/
これもいい