2010-05-21 7 views
38

J'ai dans mon applicationContext.xmlpropriétés de printemps (propriété espace réservé) Autowiring

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


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

Est-il possible de faire la même chose par autowire? Quelque chose comme:

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

Répondre

76

Vous pouvez utiliser @Value:

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

vrai, pour le printemps 3.0, qui est la version actuelle. (+1) – Bozho

+1

alors c'est le signe du dollar! pas un hachage. Merci pour le conseil. javadocs pour @Value m'a trompé –

+0

Question idiote mais d'où vient le $ {clientapi.url} de ?? – user2441441

2

Pour le printemps 3.0, la manière correcte est celle présentée - en utilisant @Value("${expression}")

Pour le printemps pré-3.0, vous pouvez:

@Autowired 
private StringValueResolver resolver; 

Aucun problème d'initialisation de contexte ici, b Je ne suis pas sûr que ça marchera. En utilisant le résolveur, vous pouvez résoudre les propriétés.

1

Ma solution est d'utiliser

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

puis dans clientapi.properties fichier

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

Celui-ci est bien trop

5

Ok. Viens de le recevoir. Vous devez ajouter @Autowired Quelque chose comme:

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

J'utilise le printemps 3.0.0.RELEASE

Vive

8

Il m'a fallu un certain temps pour comprendre pourquoi cela n'a pas fonctionné. J'ai toujours utilisé un # au lieu d'un $. J'ai toujours reçu le message:

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

juste eu à changer de:

@Value("#{secretkey}') 

à

@Value('${secretkey}') 

J'espère que cela fait gagner du temps de quelqu'un.

+0

J'ai été bloqué par ceci ... c'était la solution! Merci Felix – hashcoder

Questions connexes