vik*_*mun 3 java dependency-injection jax-rs jersey hk2
我有一个使用 Jersey v2.25.1 的项目。我使用 Jersey 的内置 HK2 注入来执行依赖注入,一切正常。快进到现在,我决定更新到 Jersey v2.27。
当我运行我的项目时,出现以下异常:
java.lang.IllegalStateException: InjectionManagerFactory not found
Run Code Online (Sandbox Code Playgroud)
经过一番谷歌搜索,我发现我需要添加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)
Run Code Online (Sandbox Code Playgroud)
将我的所有依赖项恢复到 Jersey v2.25.1 后,一切正常。我需要做什么来修复这些错误,以便我可以使用 Jersey v2.27?
编辑:我不使用 Maven,所以我不能真正发布一个pom.xml.
Paul Samsotha在评论中的回答:
尝试更改您的 AbstractBinder 导入。有两种,一种是泽西岛一种,一种是 HK2。尝试使用泽西岛。
基本上,我需要更改我实现的 AbstractBinder 类
org.glassfish.hk2.utilities.binding.AbstractBinder
Run Code Online (Sandbox Code Playgroud)
到
org.glassfish.jersey.internal.inject.AbstractBinder
Run Code Online (Sandbox Code Playgroud)
不同之处在于 Jersey 在 2.26 版本中将 HK2 与其内部 DI 机制分离,因此,我需要使用新的 AbstractBinder 导入,它直接来自 Jersey,而不是 HK2。
有一些 API 差异:例如,不是 a Factory<T>,而是bindFactory()采用java.util.function.Supplier<T>.
| 归档时间: |
|
| 查看次数: |
3756 次 |
| 最近记录: |