In my application I use several profiles to make certain beans eligible for autowiring. What I'm missing is the possibility to make a bean eligible for autowiring when a certain profile is NOT active.
The best way of doing it that I thought about is like this:
X
I make active for profile not_X
. In my case if I wanted a bean to be eligible for autowiring when profile B is not active, I would annotate them @Profile("not_B")
This solution however requires an up-front knowledge about all possible profiles.
Can you think of any better solution?
You can use a not (!) operator... but you have to use Spring 3.2 M1.
The following syntax is now supported
<beans profile="A,!B"> @Profile({"A", "!B"})
indicating that the element or annotated component should be processed only if profile 'A' is active or profile 'B' is not active.
See change announced here: Spring Framework 3.2 M1 Released
The commit is at GitHub: Support not (!) operator for profile selection
Issue in JIRA: SPR-8728
If upgrading to Spring 3.2 is not possible for your project, I would recommend not using the @Profile
approach and ensuring that the bean is not created in your Spring configuration.