Including bean definition when a profile is NOT active
Solution 1:
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.