39 votes

Le haricot dominant du printemps

Pouvons-nous avoir des noms en double pour le même identificateur de haricot qui est mentionné dans le XML ? Si ce n'est pas le cas, comment pouvons-nous remplacer le haricot au printemps ?

13voto

lboix Points 88

J'ajouterai que si votre besoin est juste de remplacer une propriété utilisée par votre haricot, l'approche id fonctionne trop comme skaffman l'a expliqué :

Dans votre premier fichier de configuration XML :

   <bean id="myBeanId" class="com.blabla">
       <property name="myList" ref="myList"/>
   </bean>

   <util:list id="myList">
       <value>3</value>
       <value>4</value>
   </util:list>

Dans votre deuxième fichier de configuration XML :

   <util:list id="myList">
       <value>6</value>
   </util:list>

Ensuite, votre haricot "myBeanId" sera instancié avec une propriété "myList" d'un élément qui est 6.

9voto

Denis Kniazhev Points 1998

Exemple tiré du manuel officiel du printemps :

<bean id="inheritedTestBean" abstract="true"
    class="org.springframework.beans.TestBean">
  <property name="name" value="parent"/>
  <property name="age" value="1"/>
</bean>

<bean id="inheritsWithDifferentClass"
      class="org.springframework.beans.DerivedTestBean"
      parent="inheritedTestBean" init-method="initialize">
  <property name="name" value="override"/>
  <!-- the age property value of 1 will be inherited from  parent -->
</bean>

C'est ce que vous cherchiez ? Lien mis à jour

8voto

Roee Gavirel Points 4550

Je ne sais pas si c'est exactement ce dont vous avez besoin, mais nous utilisons des profils pour définir l'environnement dans lequel nous nous exécutons et un bean spécifique pour chaque environnement, donc c'est quelque chose comme ça :

<bean name="myBean" class="myClass">
    <constructor-arg name="name" value="originalValue" />
</bean>
<beans profile="DEV, default">
     <!-- Specific DEV configurations, also default if no profile defined -->
    <bean name="myBean" class="myClass">
        <constructor-arg name="name" value="overrideValue" />
    </bean>
</beans>
<beans profile="CI, UAT">
     <!-- Specific CI / UAT configurations -->
</beans>
<beans profile="PROD">
     <!-- Specific PROD configurations -->
</beans>

Donc, dans ce cas, si je ne définis pas de profil ou si je le définis comme "DEV", myBean obtiendra "overrideValue" pour son argument name. Mais si je mets le profil à "CI", "UAT" ou "PROD", il obtiendra "originalValue" comme valeur.

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