CDI リソースはどこで宣言すればよいですか?
-
26-09-2019 - |
質問
JSR-299 (CDI) では、リソースという (残念ながら名前が付けられている) 概念が導入されています。 http://docs.jboss.org/weld/reference/1.0.0/en-US/html/resources.html#d0e4373
この命名法におけるリソースは、Java EE 6 ブランドの依存関係注入 (@EJB、@Resource、@PersistenceContext など) と CDI の依存関係注入ブランドの間のブリッジとして考えることができます。
一般的な要点は、どこかで(これが私の質問の根本になります)、ブリッジクラスに相当するものを宣言しているようです。これには、Java EE の @EJB、@PersistenceContext、または @Resource アノテーションと CDI の @Produces アノテーションの両方でアノテーションが付けられたフィールドが含まれます。最終的な効果は、Java EE 6 が永続コンテキストを、たとえばそれが必要な場所に注入し、CDI がその注入された PersistenceContext を将来の注入 (@Inject によって処理される) のソースとして認識することです。
私の質問は次のとおりです。コミュニティのコンセンサスは何ですか、それともコンセンサスはありますか?:
- このブリッジクラスには何という名前を付ける必要がありますか
- このブリッジクラスが存在する場所
- これらすべてを 1 つのクラスにローカライズするのが最善か、それともいくつかのクラスを作成するのが最善か
...?
自分の工夫に任せて、私は という単一のクラスを宣言することを考えていました。 CDIResources
そしてそれを One True Place として使用して、Java EE の DI を CDI の DI にリンクします。多くの例が同様のことを行っていますが、それらが「単なる」例なのか、それともそれが良い方法なのかはわかりません。
ありがとう。
解決
これは非常に主観的なようだが、のI のいくつかのクラスを作成することを好むとのI のコールFooProducer
を生成するクラスをFoo
。