J'ai dans mon applicationContext.xml
<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 de même en autowire? Quelque chose comme :
@Autowired
@Qualifier("${clientapi.url}")
public void setClientApiUrl(String clientApiUrl) {
this.clientApiUrl = clientApiUrl;
}
Vous pouvez utiliser @Value
:
@Value("${clientapi.url}")
public void setClientApiUrl(String clientApiUrl) {
this.clientApiUrl = clientApiUrl;
}
Il m'a fallu un certain temps pour comprendre pourquoi cela ne fonctionnait pas. 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'
Je devais juste le changer de:
@Value("#{secretkey}')
à
@Value('${secretkey}')
J'espère que cela fait gagner du temps à quelqu'un.
D'accord. 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.
À votre santé
Pour le printemps 3.0, la manière correcte est celle indiquée - en utilisant @Value("${expression}")
Pour le printemps pré-3.0, vous pouvez essayer:
@Autowired
private StringValueResolver resolver;
Il n'y a eu aucun problème d'initialisation du contexte ici, mais je ne suis pas sûr que cela fonctionnera. À l'aide du résolveur, vous pouvez résoudre les propriétés.
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 bon aussi