溶接中@Inject(JSR-299 RI)と依存性注入。対応する@Producesはどのように発見されましたか?
-
24-09-2019 - |
質問
私は、スタンドアローンのアプリケーションでそれを使用する目的でJSR-299のリファレンス実装「ウェルド」で演じてきた、と私はドキュメントを見ていたし、魔法に驚嘆しました。
私の質問は、の方法のInject'ed @なるように指定されたオブジェクトのプロデューサーは、
?発見されましたどちらのJavaコンパイラを簡単にクラスローダによって発見された、または完全なクラスパスは、私には非常に非効率的に聞こえる、それらが何を見るために、すべてのクラスをロード横断しなければならない、またはそれは全く異なるアプローチである注釈のためのヒントを生成します。
トリックは何ですか?
解決
はクラスパスは、「ビーンアーカイブ」についてスキャンされます。豆アーカイブはMETA-INF/beans.xml
を含むそれらのライブラリです。これらのアーカイブのすべてのBeanが自動的にBeanManager
に登録されており、その注釈が解析され、保存されています。プロデューサーが必要とされるたびに、Beanマネージャが適格生産について相談された。
他のヒント
私はそれはSeamでと同じように動作することを前提としています。クラスパスは確かに走査されます。あなたはユーザーと匿名ユーザーのためのアプリケーションレベルでの別に記録されます。
のセッション・レベルでのインスタンスごとに1つの農産物を持つことができるようにIMPLも、最小のマッチング範囲で@produceを検索します知らん、これ@Injectが部分的にHibernateの父親によって行わが最終的に再加工/ SpringSourceのとGoogleが最後に影響を受けました。多分それは少しGuiceの?
のように動作します所属していません StackOverflow