在我的应用程序中,我使用了几个profiles来使某些bean有资格进行自动装配。我缺少的是当某个配置文件不活动时,可以使豆符合自动装配的条件。
我想到的最好的方法就是这样:
X
激活我的广告素材。我为个人资料not_X
设置了有效广告。在我的情况下,如果我想要一个bean在配置文件B不活动时有资格进行自动装配,我会注释它们@Profile("not_B")
但是,此解决方案需要有关所有可能配置文件的前期知识。
你能想到更好的解决方案吗?
答案 0 :(得分:60)
您可以使用not(!)运算符...但您必须使用Spring 3.2 M1。
现在支持以下语法
<beans profile="A,!B"> @Profile("A", "!B")
表示仅当配置文件“A”处于活动状态或配置文件“B”未激活时才应处理元素或带注释的组件。
见此处公布的变更:Spring Framework 3.2 M1 Released
提交是在GitHub:Support not (!) operator for profile selection
JIRA中的问题:SPR-8728
如果您的项目无法升级到Spring 3.2,我建议不要使用@Profile
方法并确保不在Spring配置中创建bean。