web-dev-qa-db-fra.com

Câblage automatique des propriétés de printemps (propriété-espace réservé)

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;
}
40
Piotr Gwiazda

Vous pouvez utiliser @Value:

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

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.

8
Felix

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é

5
Costa

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.

2
Bozho

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

1
Piotr Gwiazda