Dans mon application, j'utilise plusieurs profils pour rendre certains beans éligibles au câblage automatique. Ce qui me manque, c'est la possibilité de rendre un bean éligible pour le câblage automatique lorsqu'un certain profil n'est PAS actif.
La meilleure façon de le faire à laquelle j'ai pensé est la suivante:
X
Je rends actif pour le profil not_X
. Dans mon cas, si je voulais qu'un bean soit éligible pour le câblage automatique lorsque le profil B n'est pas actif, je les annoterais @Profile("not_B")
Cette solution nécessite cependant une connaissance préalable de tous les profils possibles.
Pouvez-vous penser à une meilleure solution?
Vous pouvez utiliser un opérateur not (!) ... mais vous devez utiliser Spring 3.2 M1.
La syntaxe suivante est désormais prise en charge
<beans profile="A,!B"> @Profile("A", "!B")
indiquant que l'élément ou le composant annoté ne doit être traité que si le profil "A" est actif ou le profil "B" n'est pas actif.
Voir le changement annoncé ici: Spring Framework 3.2 M1 publié
La validation est sur GitHub: Supporte pas (!) L'opérateur pour la sélection de profil
Problème dans JIRA: SPR-8728
Si la mise à niveau vers Spring 3.2 n'est pas possible pour votre projet, je vous recommande de ne pas utiliser le @Profile
approche et s'assurer que le bean n'est pas créé dans votre configuration Spring.