2012-11-26 7 views
30

私のアプリケーションでは、いくつかの豆をautowiringに適格にするためにいくつかのものを使用しています(profiles)。私が欠けているのは、特定のプロファイルがアクティブでないときに、自動配線の対象となるBeanを作成する可能性です。プロファイルがアクティブでないときのbean定義のインクルード

私が考えたことを、それを行うための最善の方法は、このようなものです:

  1. は、我々は、例えば、すべての可能なプロファイルのリストを持っているとしましょう{あいうえお}。
  2. 特定の実行でアクティブなプロファイルは{A、C}です。
  3. 私がしているのは、アクティブではないすべての可能なプロファイルの人工プロファイルを作成することです。この例では、{not_B、not_D}のプロファイルを作成します。
  4. アクティブでないプロファイルに基づいてアクティブにしたいbean Xプロファイルnot_Xに対してアクティブにします。私は、プロファイルBがアクティブでないときBeanはオートワイヤリングの対象になりたかったならば私の場合、私は@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

春3.2にアップグレードすると、プロジェクトのために可能でない場合は、私が使用していないお勧めします@Profileアプローチを使用して、BeanがSpring設定で作成されていないことを確認します。

+0

これは素晴らしいことですが、Spring 3.2は現在RC1にありますので、私にとってはオプションではありません。 – ShyJ

+0

投稿への変更を参照してください。 @Profileで初期化しておかないと、Springの設定でこれを処理することをお勧めします。 – aweigold

+0

@Shyjそれについても(クラスパススキャナを除外で設定するように)思っていますが、それはプロファイルと同じようには見えません。 – ShyJ

関連する問題