2010-05-21 19 views
38

que tengo en mi applicationContext.xmlpropiedades elásticas (propiedad de marcador de posición) Autowiring

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


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

¿Es posible hacer lo mismo por Autowire? Algo así como:

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

Respuesta

76

Puede utilizar @Value:

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

cierto, para la primavera 3.0, que es la versión actual. (+1) – Bozho

+1

¡así que es el signo de dólar! no es un hash gracias por el consejo. javadocs for @Value me engañó –

+0

Pregunta tonta pero ¿de dónde sale el $ {clientapi.url}? – user2441441

2

Para la primavera 3,0, la forma correcta es la que se muestra - con ayuda de @Value("${expression}")

Para la primavera pre-3.0, que puede probar:

@Autowired 
private StringValueResolver resolver; 

No hubo problemas de inicialización de contexto aquí, b Pero no estoy seguro de que funcione. Usando el resolver puedes resolver propiedades.

1

Mi solución es utilizar

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

y luego en clientapi.properties archivos

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

Ésta es bueno también

5

Ok. Acabo de recibirlo. Es necesario añadir @Autowired Algo así como:

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

estoy usando la primavera 3.0.0.RELEASE

Saludos

8

Me tomó un tiempo para entender por qué no funcionó. Siempre usé un # en lugar de un $. Siempre me dieron el mensaje:

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

sólo tenía que cambiarlo desde:

@Value("#{secretkey}') 

a

@Value('${secretkey}') 

espero que esto ahorra tiempo de alguien.

+0

Me obsesioné con esto ... ¡esta fue la solución! Gracias Felix – hashcoder

Cuestiones relacionadas