私は2つの豆を持っています。どちらもメール機能を実装しています。アプリケーションサーバーにデプロイされている場合にのみ動作します。もう1つはテストに使用されます。プロファイル付きのスプリングデフォルト配線
私たちは、開発者と環境ごとのプロファイルを持っています。実際にテストするときだけ、テストBeanを配線したいと思います。他のBeanは、テストしないときに使用する必要があります。これをどのようにアーカイブできますか?私はこのどこを読んで「デフォルト」を使用して
が、「DEV」のようなプロファイルの「デフォルト」へのフォールバックがないように思える:
@Component
@Profile("localtest")
public class OfflineMail implements Mailing {}
ソリューションが近づい
@Component
@Profile("default")
public class OnlineMail implements Mailing {}
- >配線のためのBeanが見つかりませんでした。
プロフィールを残す:
@Component
public class OnlineMail implements Mailing {}
- "localtest" プロファイルを実行しているとき>はユニークな例外をスローします。すべてのプロファイルを追加
:
@Component
@Profile("prod")
@Profile("integration")
@Profile("test")
@Profile("dev1")
@Profile("dev2")
@Profile("dev3")
...
public class OnlineMail implements Mailing {}
これは、実際に働いているが、しかし、私たちの開発者は、彼らが「DEV <WindowsLogin>」を使用し、番号およびプロファイルを追加していない、1つの豆のために働くかもしれませんが、一つはなりますこれは間違いなく醜いのでいくつかの豆のためにそれを使用するときにトラブルに。
@Profile( "!localtest")のようなものを使用してもうまく動作していないようです。
特定のBeanが見つからない場合、誰かがデフォルトで「ワイヤー」を取得するためのより良い方法を知っていますか? ( "localtest")@ActiveProfilesを使用してテストを実行し、DEFAULTプロファイルとして "生産" を使用して、生産的環境を実行し
@Component
@Profile("production")
public class OnlineMail implements Mailing {}
@Component
@Profile("localtest")
public class OfflineMail implements Mailing {}
:
'Profile' @'なしでは何も有線でない場合は、デフォルトの豆にする必要があります。コンポーネントの名前を設定する際に一意の例外を避けようとしましたか?つまり、@Component( "mail") '' @Profile( "localtest")とそれを除いたものですか? – n1ckolas