2010-01-19 14 views
5

¿Es posible agregar una propiedad de PropertyPlaceholder a un bean mediante @Autowired? No puedo inyectarlo en el xml-contexto-config porque los granos se cargan de esta manera:@Autowired and PropertyPlaceholder

<context:component-scan base-package="..."/> 

Respuesta

9

En la primavera 3,0 (creo que desde Milestone 3) se puede utilizar @Valor ("$ {foo.bar } ") para acceder a las propiedades de PropertyPlaceholder.

+0

me puede dar un ejemplo de esto? Estoy usando spring 3 rc3 y cuando intento hacerlo de esta manera (por ejemplo, @Value ("$ {foo.bar}")), entonces mi atributo obtiene el valor "foo.bar" ... – woezelmann

+2

Sí, digamos que tiene marcador de posición de propiedad configurado de esta manera: '' puede inyectar el valor de la propiedad con la clave 'foo.bar' de' app.properties' a usted bean: 'class MyBean { @Value ($ {" foo.bar "} private String value; }' – semberal

+0

Disculpa por el formateo, soy nuevo aquí :) – semberal

6

Un resorte 2,5 enfoque:

@Component 
public class Foo { 
    @Autowired 
    @Qualifier("myFlag") 
    private Boolean flag; 
    /* ... */ 
} 

y el contexto

<context:component-scan base-package="..."/> 
<context:property-placeholder location="classpath:app.properties"/> 
<!-- the flag bean --> 
<bean id="myFlag" class="java.lang.Boolean"> 
    <constructor-arg value="${foo.bar}"/> 
</bean> 

Saludos

+0

+1 alternativamente, y con un poco menos de detalle, '@Resource (name =" myFlag ")' – skaffman

Cuestiones relacionadas