簡體   English   中英

更新到v2.27后,Jersey HK2依賴項注入功能不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM