我正在寫一個CDI擴展。在CDI擴展中,告訴注入點是否滿足的最簡單方法是什麼?
什麼是最簡單的方法來查找在bean部署期間是否滿足給定的注入點,並在不滿足時將其刪除?
ProcessInjectionPoint
時間還爲時過早,因爲bean發現還沒有完成,所以你不能告訴任何給定的InjectionPoint
是否存在一個bean來滿足它。
ProcessInjectionTarget
-時間似乎也是錯誤的地方,因爲雖然所有的注入點已經被讀取,但現在沒有辦法現在刪除一個。
我需要一個事件,讓我可以從注射目標中移除注射點,如果我可以確定注射點不會得到滿足。
(背景:我擺弄翻譯編程Guice的com.google.inject.Inject
註釋(其特點是optional
屬性))
確實如此,但不幸的是我正在使用的代碼(我不控制)使用'com.google.inject.Inject(optional = true)'代替。嗯。基本上我期望在容器驗證時有效截取注入點,如果發現它不好,只需將相關字段/參數設置爲null。我不認爲這需要我沒有的上下文 - 當然CDI的類型安全解析算法具有它需要的所有上下文?我所缺少的是在生命週期中正確點的增變器。我可能需要引入一個生成的生產者方法。 –
哦,我明白了,誤解了你。在這種情況下,我的答案的第一部分沒有太大意義,忽略它。是的,類型解析機制確實會在應用程序初始化時驗證條件,並且確實具有足夠的信息。然而,我仍然知道沒有任何'mutator'機制可以幫助你。您的問題與[CDI-45問題](https://issues.jboss.org/browse/CDI-45)中討論的完全相同 - 在解釋此用例時,值得在其中添加註釋。或者在Weld forums/issue tracker上點擊我們,以便我們可以進一步討論。同時我會在這裏更新答案。 – Siliarus