2010-01-13 11 views
13

Primero: estoy usando Spring 3.0Como puedo inyectar un valor de la propiedad en un muelle de anotación configurado MVC 3.0 controlador

Tengo un problema al configurar mi clase controlador. El controlador usa un servicio web que quiero definir la dirección del punto final usando un archivo .properties.

@Controller 
public class SupportController { 

    @Value("#{url.webservice}") 
    private String wsEndpoint; 

    ... 

En mi solicitud contexto archivo XML, he definido esto:

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

He estado leyendo la documentación, probando diferentes enfoques (. Como la adición de prefijos SystemProperties), pero Sigo recibiendo un mensaje de error que me dice que no existe.

Campo o 'url' propiedad no se puede conocer en objeto de tipo 'org.springframework.beans.factory.config.BeanExpressionContext'


Ok. Lo he descubierto.

Ahora, en el controlador:

@Value("#{settings['url.webservice']") 

Luego, en la configuración contexto tengo este "grano de ayudante":

<util:properties id="settings" 
location="/WEB-INF/supportweb.properties"></util:properties> 
+0

Duplicado: http://stackoverflow.com/questions/1741968/using-spring3-value-to-access-propertyplaceholderconfigurer-values – skaffman

Respuesta

11

esto debería funcionar, también:

@Value("${url.webservice}") 
private String wsEndpoint; 
2

debe verificar que el

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

se define en webmvc-config.xml donde se crean instancias de los @Controllers

2

tengo esta configuración y funciona bien:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="locations"> 
     <list> 
     <value>classpath:application.properties</value> 
     </list> 
    </property> 
</bean> 

y yo iniejct la propiedad de esta manera

@Value("${root.log.level}") 
private String prop; 

el campo se inicializó correctamente en el valor "DEBUG".

Cuestiones relacionadas