30 votos

Hay un atajo para la creación de una constante de Cadena en la Spring de contexto archivo XML?

Necesito definir una cadena de valor en la Spring de contexto archivo XML que es compartida por varios de los frijoles.

Esto es como yo lo hago:

<bean id="aSharedProperty" class="java.lang.String">
    <constructor-arg type="java.lang.String" value="All beans need me :)"/>
</bean>

La creación de un java.lang.Cadena de frijol por el paso de un argumento de constructor de java.lang.La cadena parece desacoplados.

Hay un acceso directo?

Sé que esta propiedad puede ser transferido mediante PropertyOverrideConfigurer, pero quiero mantener esta propiedad en el archivo XML.

22voto

mrembisz Puntos 6391

Usted puede utilizar PropertyPlaceholderConfigurer y mantener los valores en xml:

<context:property-placeholder properties-ref="myProperties"/>

<bean id="myProperties" 
    class="org.springframework.beans.factory.config.PropertiesFactoryBean">
  <property name="properties">
    <props>
      <prop key="aSharedProperty">All beans need me :)</prop>
    </props>
  </property>
</bean>

A continuación, hacen referencia con:

<bean id="myBean" class="my.package.MyClass">
  <property name="someField" value="${aSharedProperty}"/>
</bean>

10voto

Kaitsu Puntos 2303

Un atajo a la solución propuesta por mrembisz va como esto:

<context:property-placeholder properties-ref="myProperties"/>

<util:properties id="myProperties">
    <prop key="aSharedProperty">All beans need me :)</prop>
</util:properties>

4voto

beny23 Puntos 14428

Usted puede ser capaz de utilizar lo siguiente:

<bean id="abstractParent" abstract="true">
    <property name="sharedProperty" value="All child beans need me" />
</bean>

<bean id="bean1" class="MyClass1" parent="abstractParent">
    ...non-shared properties...
</bean>

<bean id="bean2" class="MyClass2" parent="abstractParent">
    ...non-shared properties...
</bean>

Sin embargo, que se basa en la propiedad que tiene el mismo nombre, por lo que puede no ser aplicable para usted.

3voto

ben1729 Puntos 457

Algo que yo he utilizado en el pasado es la SpEL para asegurarse de que un bean tiene el mismo valor que otra:

<bean id="myBean" class="xxx.yyy.Foo" >
    <property name="myProperty" value="1729" />
</bean>

<bean id="copyCat" class="xxx.yyy.Bar" >
    <property name="anotherProperty" value="#{myBean.myProperty}" />
</bean>

He encontrado que esto es particularmente útil cuando se establece el valor de que hizo algo distinto de una simple asignación.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X