在配置文件不活动时包括 bean 定义

在我的应用程序中,我使用了几个 资料来使某些 bean 符合自动装配的条件。我所遗漏的是,当某个配置文件不活动时,可以让 bean 符合自动装配的条件。

我认为最好的方法是这样的:

  1. 假设我们有一个所有可能配置文件的列表,例如{ A,B,C,D }。
  2. 用于特定执行的活动配置文件是{ A,C }。
  3. 我所做的就是为所有未激活的可能的配置文件创建人工配置文件。在示例中,我将创建{ not _ B,not _ D }配置文件。
  4. 我想要活跃的豆基于非活跃的配置文件 X我使活跃的配置文件 not_X。在我的例子中,如果我想要一个 bean 在配置文件 B 不活动的时候有资格进行自动装配,我会注释它们 @Profile("not_B")

然而,这个解决方案需要预先了解所有可能的配置文件。

你能想到更好的解决办法吗?

50872 次浏览

您可以使用 not (!)操作符... 但必须使用 Spring 3.2 M1。

现在支持以下语法

<beans profile="A,!B">


@Profile({"A", "!B"})

指示只有当配置文件“ A”处于活动状态或配置文件“ B”不处于活动状态时才应处理元素或带注释的组件。

请参阅此处公布的更改: Spring Framework 3.2 M1发布
提交位于 GitHub: 支持 not (!)操作符用于配置文件选择
在 JIRA 的问题: < a href = “ https://JIRA.spring.io/浏览/SPR-8728”rel = “ norefrer”> SPR-8728

如果您的项目无法升级到 Spring 3.2,我建议不要使用 @Profile方法,并确保在您的 Spring 配置中没有创建 bean。