2012-11-26 52 views
30

在我的應用程序中,我使用幾個profiles來使某些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")

然而,這種解決方案需要對所有可能的配置文件的先期知識。

你能想出更好的解決方案嗎?

回答

32

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

見變化在這裏宣佈: http://www.springsource.org/node/3563

的承諾是在這裏: https://github.com/SpringSource/spring-framework/commit/bcd44f3798ed06c0704d2a3564b8a9735e747e87

問題:https://jira.springsource.org/browse/SPR-8728

如果升級到Spring 3.2是不可能爲你的項目,我會建議不使用@Profile方法並確保bean不是在Spring配置中創建的。

+0

這將會很棒,但是Spring 3.2現在在RC1中,所以它不適合我。 – ShyJ

+0

看到我對帖子的更改。我會建議不用@Profile初始化,然後在Spring配置中處理這個。 – aweigold

+0

@Shyj也想到了這一點(比如像配置類路徑掃描程序一樣排除在外),但這並不像配置文件那麼好... – ShyJ

相關問題