私のアプリケーションでは、いくつかの profiles を使用して、特定のBeanを自動配線の対象にします。私が欠けているのは、特定のプロファイルがアクティブでないときに、Beanを自動配線の対象にする可能性です。
私が考えた最善の方法は次のとおりです。
X
に基づいてアクティブにしたいBeanは、プロファイル_not_X
_に対してアクティブにします。私の場合、プロファイルBがアクティブではないときにBeanを自動配線に適格にしたい場合は、@Profile("not_B")
アノテーションを付けますただし、このソリューションには、可能なすべてのプロファイルに関する事前知識が必要です。
より良い解決策はありますか?
Not(!)演算子を使用できますが、Spring 3.2 M1を使用する必要があります。
次の構文がサポートされるようになりました
<beans profile="A,!B"> @Profile("A", "!B")
プロファイル「A」がアクティブであるか、プロファイル「B」がアクティブでない場合にのみ、要素または注釈付きコンポーネントを処理する必要があることを示します。
ここで発表された変更を参照してください: Spring Framework 3.2 M1リリース
コミットはGitHubで行われます。 プロファイル選択で(!)演算子をサポートしない
JIRAの問題: SPR-8728
プロジェクトでSpring 3.2にアップグレードできない場合は、@Profile
アプローチを使用せず、Spring構成でBeanが作成されないようにすることをお勧めします。