[英]Jersey HK2 Dependency Injection doesn't work after update to v2.27
我有一個使用Jersey v2.25.1的項目。 我使用Jersey的內置HK2注入執行依賴項注入,並且一切正常。 快進到現在,我決定更新到Jersey v2.27。
當我運行項目時,出現以下異常:
java.lang.IllegalStateException: InjectionManagerFactory not found
經過一番谷歌搜索后,我發現我需要添加jersey-hk2
依賴項。 這樣做使我得到以下異常:
org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl(requiredType=<MyClass>,parent=<MyClass>,qualifiers={},position=0,optional=false,self=false,unqualified=null,1044705957)
將我所有的依賴關系還原到Jersey v2.25.1后,一切正常。 我需要怎么做才能解決這些錯誤,以便可以使用Jersey v2.27?
編輯:我不使用Maven,所以我不能真正發布pom.xml
,但是明天我將把MVCE與我所擁有的確切依賴關系以及一個依賴注入的基本示例放在一起。
Paul Samsotha在評論中回答:
嘗試更改您的AbstractBinder導入。 有兩種,分別是球衣1和HK2。 嘗試使用球衣之一。
基本上,我需要更改從實現的AbstractBinder類
org.glassfish.hk2.utilities.binding.AbstractBinder
至
org.glassfish.jersey.internal.inject.AbstractBinder
區別在於Jersey在版本2.26中將HK2與其內部DI機制解耦,因此,我需要使用新的AbstractBinder導入,該導入直接來自Jersey,而不是HK2。
API有一些區別:例如, bindFactory()
代替java.util.function.Supplier<T>
代替Factory<T>
java.util.function.Supplier<T>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.