2012-02-09 9 views
1

コンテキストに応じて、別の実装をBeanに挿入したいとします。ここでの状況です:生産文脈で、これはAImplForProdする必要がありながらJBoss Weld:テスト用に異なる実装を実装する

interface A{} 

class AImplForTest implements A{} 

class AImplForProd implements A{} 

class B{ 
    @Inject A a; 
} 

テスト文脈では、私は、AImplForTestが注入されたいです。 Bは2つのコンテキストで同じクラスです。出来ますか?

答えて

1

実際には使用されませんが、理論上は@Alternative注釈を使用できます。 Weld reference documentationから

代替実装 特定のクライアントモジュールまたは展開シナリオに固有の豆です。 ...デフォルトでは、 @Alternative Beanは無効になっています。 の代わりに、 のBeanアーカイブのbeans.xml記述子を有効にして、 インスタンス化とインジェクションのために使用できるようにする必要があります。このアクティベーションは、そのアーカイブ内の豆 にのみ適用されます。

+0

これは私が初めて試したことですが、私はプロジェクトでソースを、別のプロジェクトでテスト(とAImplForTest)を見つけなければなりませんでした。しかし、「アーカイブ」とはどういう意味ですか?たぶん私は本当にそれが何を意味するのか分かりません... –

+0

アーカイブはWARまたはJARです。 –

関連する問題