Jersey HK2 依赖注入在更新到 v2.27 后不起作用

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,所以我真的不能 post pom.xml,但明天我将把一个 MVCE 与我拥有的确切依赖关系放在一起,以及一个依赖注入的基本示例。

Paul Samsotha 在评论中回答:

Try to change your AbstractBinder import. There are two, a Jersey one and an HK2 one. Try to use the Jersey one.

基本上,我需要更改我从

实现的 AbstractBinder class
org.glassfish.hk2.utilities.binding.AbstractBinder

org.glassfish.jersey.internal.inject.AbstractBinder

区别在于 Jersey 在 2.26 版本中将 HK2 与其内部 DI 机制分离,因此,我需要使用新的 AbstractBinder 导入,它直接来自 Jersey,而不是 HK2。

有一些 API 差异:例如,bindFactory() 不是 Factory<T>,而是 java.util.function.Supplier<T>