2009-08-19 13 views
8

es posible definir en un archivo de contexto de primavera, y se puede acceder a una o más propiedades que en < bean> elementos.propiedades globales en la primavera

El siguiente ejemplo ilustra mejor lo que necesito - Quiero definir el FOO propiedad una vez y luego hacer referencia a ella varias veces en mis diversas < frijol> Definiciones:

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> 
    <properties> 
    <property name="FOO" value="BAR"> 
    </properties> 

    <bean name="TEST" class="mytest"> 
    <property name="MYFOO" value="${FOO}"/> 
    </bean> 
    <bean name="TEST1" class="mytest1"> 
    <property name="MYFOO" value="${FOO}"/> 
    </bean> 

</beans> 

Cualquier entrada sería muy apreciado.
Gracias, Kevin.

Respuesta

9

Puede hacerlo utilizando el nombre PropertyPlaceHolderConfigurer. Ver here para el ejemplo en los documentos de primavera. No define los valores de propiedad en el archivo de beans de primavera, los externaliza en un archivo .properties.

Usted podría, sospecho, usar PropertyPlaceHolderConfigurer o uno de sus hermanos para inyectar un objeto Properties definido dentro de su archivo Spring, pero eso sería una solución bastante más detallada.

4

Si solo necesita definirlos en su archivo xml y nunca cambiarlos (como cambiaría una opción de configuración, digamos un puerto o una ip), puede crear un bean de clase String con la propiedad dada y luego escribir . Crear un bean de la clase String no es lo más sencillo, pero es factible.

Si quiere algo más complicado (digamos que quiere un archivo de configuración que resida fuera del jar donde está su xml con la definición de bean), puede mirar la clase PropertyPlaceholderConfigurer.

3

acaba de encontrar una manera de hacer esto todo en el archivo XML de primavera con ningún archivo de propiedades externas es necesario (aunque se puede complementar con uno si se desea)

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="properties"> 
     <util:properties> 
      <prop key="foo1">bar1</prop> 
      <prop key="foo2">bar2</prop> 
     </util:properties> 
    </property> 
</bean> 

entonces hacen referencia a ellos simplemente como normal como ${foo1} donde necesitaba

+0

No creo que esta realidad funcione. la [documentación] (http://docs.spring.io/spring/docs/2.0.8/reference/xsd-config.html) sugiere que es una mano corta para listar ubicaciones de archivos de propiedades. –

Cuestiones relacionadas