私はCDI拡張を書いています。CDI拡張では、注入点が満足されるかどうかを判断する最も簡単な方法は何ですか?
Beanのデプロイ時に特定の注入ポイントが満たされているかどうかを確認し、満たされない場合は削除するのが最も簡単な方法は何ですか?あなたはBeanが、それを満たすために存在しているかどうか、任意のInjectionPoint
で、言うことができないので、豆の発見は、まだ完了していないので、
ProcessInjectionPoint
-timeは、時期尚早です。
ProcessInjectionTarget
時には、すべての注入点はすでに読み込まれていますが、現在は削除する方法がないため、間違った場所と思われます。
注入ポイントが満たされないと判断できる場合は、注入ターゲットから注入ポイントを削除できるイベントが必要です。
(背景:私はプログラム的optional
属性を備えGuiceののcom.google.inject.Inject
注釈を()翻訳するとぐちゃぐちゃしています)
本当にありますが、残念ながら私が扱っているコード(私が制御しないコード)では、代わりに 'com.google.inject.Inject(optional = true)'を使用していました。うーん。基本的には、コンテナの検証時に注入ポイントを効果的に傍受しようとしていますが、不良であると判断された場合は、関連するフィールド/パラメータを代わりに 'null 'に設定してください。私はそれが私が持っていない文脈を必要とするとは思わない - 確かにCDIのtypesafe解決アルゴリズムは、ここに必要なすべてのコンテキストを持っていますか?私が欠けているのは、ライフサイクルの正しい点にあるミューテータです。おそらく、代わりに生成されたプロデューサメソッドを導入する必要があります。 –
ああ、私はあなたを誤解しています。その場合、私の答えの最初の部分はあまり意味がありません、無視してください。はい、タイプ解決のメカニズムは、アプリケーションの初期化時に条件を検証し、実際には十分な情報を持っています。それでも私はここであなたを助けることができる「ミューテータ」の仕組みがないことを知っています。あなたの問題は、[CDI-45の問題](https://issues.jboss.org/browse/CDI-45)で議論されたのと全く同じように聞こえる - このユースケースを説明するコメントを追加する価値がある。または、Weld forum/issue trackerで私たちに打つことで、これについてさらに議論することができます。私はここで答えを更新します。 – Siliarus