36 votes

Est-il un raccourci pour la création d'une Chaîne de caractères constante au Printemps contexte fichier XML?

J'ai besoin de définir une valeur de chaîne au Printemps contexte fichier XML qui est partagé par plusieurs des haricots.

C'est comment je le fais:

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

La création d'un projet java.lang.Haricot vert en passant un argument du constructeur de java.lang.La chaîne semble encombrants.

Est-il un raccourci?

Je sais que cette propriété peut être transmis à l'aide PropertyOverrideConfigurer, mais je veux garder cette propriété dans le fichier XML.

24voto

mrembisz Points 6391

Vous pouvez utiliser PropertyPlaceholderConfigurer et de garder les valeurs dans le fichier 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>

Alors que vous y faites référence à:

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

13voto

Kaitsu Points 2303

Une abréviation pour la solution proposée par mrembisz va comme ceci:

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

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

4voto

beny23 Points 14428

Vous pouvez être en mesure d'utiliser les éléments suivants:

<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>

Cependant, qui s'appuie sur la propriété portant le même nom, ne peuvent donc pas être applicable pour vous.

4voto

ben1729 Points 457

Quelque chose que je ai utilisé dans le passé est SpEL de s'assurer qu'un haricot a la même valeur qu'un autre:

<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>

J'ai trouvé ceci pour être particulièrement utile lors de la définition de la valeur n'a d'autre chose que d'une simple affectation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X