在我的应用程序中我使用了几个profiles http://blog.springsource.com/2011/02/14/spring-3-1-m1-introducing-profile/使某些 bean 适合自动装配。我缺少的是当某个配置文件不活动时使 bean 符合自动装配条件的可能性。
我想到的最好的方法是这样的:
- 假设我们有所有可能的配置文件的列表,例如{A B C D}。
- 对于特定执行有效的配置文件是{A,C}。
- 我所做的是为所有可能的非活动配置文件创建人工配置文件。在示例中,我将创建 {not_B, not_D} 配置文件。
- 我想要根据不活跃的配置文件活跃的豆子
X
我激活个人资料not_X
。就我而言,如果我希望一个 bean 在配置文件 B 未激活时有资格进行自动装配,我会对它们进行注释@Profile("not_B")
然而,该解决方案需要预先了解所有可能的配置文件。
你能想到更好的解决方案吗?
您可以使用 not (!) 运算符...但您必须使用 Spring 3.2 M1。
现在支持以下语法
<beans profile="A,!B">
@Profile({"A", "!B"})
指示仅当配置文件“A”处于活动状态或配置文件“B”不处于活动状态时才应处理元素或带注释的组件。
请参阅此处宣布的更改:Spring框架3.2 M1发布 https://spring.io/blog/2012/05/29/spring-framework-3-2-m1-released
提交位于 GitHub:支持非(!)运算符进行配置文件选择 https://github.com/SpringSource/spring-framework/commit/bcd44f3798ed06c0704d2a3564b8a9735e747e87
JIRA 中的问题:SPR-8728 https://jira.spring.io/browse/SPR-8728
如果您的项目无法升级到 Spring 3.2,我建议不要使用@Profile
方法并确保该 bean 不是在 Spring 配置中创建的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)