Printemps primordial du haricot
Pouvons-nous avoir de doublons de noms pour la même bean id qui est mentionné dans le fichier XML?
Si non, alors comment pouvons-nous remplacer la fève de Printemps?
- Pouvez-vous poster quelques exemple xml pour montrer exactement ce que tu veux dire
Vous devez vous connecter pour publier un commentaire.
Tout le Printemps contexte ne peut avoir qu'un haricot pour toute l'id ou le nom. Dans le cas du XML
id
attribut, ce qui est appliquée par la validation du schéma. Dans le cas de laname
attribut, ce qui est appliquée par le Ressort de la logique.Toutefois, si un cadre est construit à partir de deux différents XML descripteur de fichiers, et un
id
est utilisé par les fichiers, alors on va "écraser" les autres. Le comportement exact dépend de l'ordre de les fichiers chargés par le contexte.Ainsi, alors qu'il est possible, il n'est pas recommandé. C'est sujette à des erreurs et fragile, et vous obtiendrez aucune aide de Printemps, si vous modifiez l'ID de l'un mais pas l'autre.
profiles
(voir ma réponse) pour obtenir un meilleur contrôle sur elle.contextConfigLocation
propriété deServletContextHandler
.@Primary
indique qu'un haricot préférence devra être donnée lorsque plusieurs candidats sont qualifiés pour autowire une valeur unique de la dépendance.J'ajouterai que, si votre besoin est juste de remplacer un bien utilisé par votre bean, l'id de l'approche fonctionne aussi comme skaffman expliqué :
Dans votre premier appelé fichier de configuration XML :
Dans votre deuxième appelé fichier de configuration XML :
Alors votre bean "myBeanId" sera instancié avec un "maliste" la propriété d'un élément qui est 6.
Ne sais pas si c'est exactement ce dont vous avez besoin, mais nous sommes à l'aide de profils de définir l'environnement nous sommes en cours d'exécution et spécifiques bean pour chaque environnement, il est donc quelque chose comme ça:
Donc dans ce cas, si je n'ai pas de définir un profil ou si je le définir comme "DEV" myBean aurez "overrideValue" pour la valeur de l'argument de nom. Mais si j'ai mis le profil de "CI", "UAT" ou "PROD" il va se "valeur d'origine" comme valeur.
Un exemple de officiel printemps manuel:
C'est ce que tu cherchais?
Lien mis à jour
Une autre approche de haricot primordial est d'alias. Cette article du blog explique cette approche.
Une autre bonne approche ne sont pas mentionnés dans d'autres posts est d'utiliser PropertyOverrideConfigurer dans le cas où vous voulez juste pour remplacer propriétés de quelques haricots.
Par exemple, si vous souhaitez remplacer la source de données pour le test (c'est à dire utiliser une base de données en mémoire) dans une autre configuration xml, vous avez juste besoin d'utiliser
<context:property-override ..."/>
dans la nouvelle configuration, et un.properties
fichier contenant la clé-valeurs de prendre le formatbeanName.property=newvalue
substituant les principaux accessoires.application-mainConfig.xml:
application-testConfig.xml:
beanOverride.propriétés:
Que pouvons-nous déclarer la même bean id dans d'autres xml pour une autre référence électronique.x.
Servlet-Initialize.xml
Autres xml (Document.xml)
inheritedtTestBean
dans un autre bean lequel la mise en œuvre sera injecté? première ou la deuxième?