2010-05-21 12 views
38

ich in meinem applicationContext.xml habenFedereigenschaften (property-Platzhalter) autowiring

<context:property-placeholder location="classpath*:*.properties" /> 


<bean id="clientPreferencesManager" class="pl.bildpresse.bildchat2.business.ClientPreferencesManager" > 
    <property name="clientApiUrl" value="${clientapi.url}" />  
</bean> 

Ist es möglich, das gleiche von autowire zu tun? Etwas wie:

@Autowired 
@Qualifier("${clientapi.url}") 
public void setClientApiUrl(String clientApiUrl) { 
    this.clientApiUrl = clientApiUrl; 
} 

Antwort

76

Sie können @Value verwenden:

@Value("${clientapi.url}") 
public void setClientApiUrl(String clientApiUrl) { 
    this.clientApiUrl = clientApiUrl; 
} 
+0

wahr, für Frühjahr 3.0, das ist die aktuelle Version. (+1) – Bozho

+1

also ist es das Dollarzeichen! kein Hash. Danke für den Tipp. javadocs für @Value hat mich in die Irre geführt –

+0

Dumme Frage, aber woher bekommt es die $ {clientapi.url} aus ?? – user2441441

2

Für Feder 3.0, der richtige Weg, die eine gezeigt ist - mit @Value("${expression}")

Für Federvorspannung 3.0 können Sie versuchen:

Es gab hier keine Kontextinitialisierungsprobleme, b Aber ich bin mir nicht sicher, ob es funktionieren wird. Mit dem Resolver können Sie Eigenschaften auflösen.

1

Meine Lösung ist

<context:property-override location="classpath:clientapi.properties" /> 

und dann in clientapi.properties Datei

clientPreferencesManager.clientApiUrl=http://localhost:8084/ClientAPI/resources/ 

Dieses ist gut

5

Ok zu verwenden. Ich habe es gerade bekommen. Sie müssen wie @Autowired etwas hinzufügen:

@Autowired 
@Value("${clientapi.url}") 
private StringValueResolver resolver; 

Ich bin mit Feder 3.0.0.RELEASE

Prost

8

Es hat mich einige Zeit dauerte, zu verstehen, warum es nicht funktioniert. Ich habe immer eine # anstelle einer $ verwendet. Ich habe immer die Meldung:

EL1008E:(pos 0): Field or property 'secretkey' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' 

Gerade aus ändern musste:

@Value("#{secretkey}') 

zu

@Value('${secretkey}') 

Ich hoffe, das jemand Zeit spart.

+0

Ich wurde von diesem ... blokced ... das war die Lösung! Danke Felix – hashcoder

Verwandte Themen