java - Jersey JAX-RS 依赖注入
问题描述
我正在尝试使用 JAX-RS 构建一个 REST API,特别是 Jersey 实现。我试图在这个 StackOverflow question中实现身份验证。
基本上,我使用 aContainerRequestFilter
根据 Authorization 标头过滤 HTTP 请求。这个类定义了一个属性,用属性注释@Inject
(我使用的是 Kotlin,而不是 Java):
@Inject
var authenticationService: IAuthenticationService? = null
我已经在我的 AbstractBinder 中注册了这个身份验证服务:
class MyApplicationBinder : AbstractBinder() {
override fun configure() {
bind(AuthenticationService::class.java) to IAuthenticationService::class.java
}
}
并将此应用程序活页夹注册到我的ResourceConfig
:
class MyResourceConfig : ResourceConfig() {
init {
// ...
register(MyApplicationBinder())
}
}
但是我在启动时遇到运行时异常:
org.glassfish.hk2.api.UnsatisfiedDependencyException:
There was no object available for injection at SystemInjecteeImpl(
requiredType=IAuthenticationService,
parent=AuthenticationRequestFilter,
qualifiers={},
position=-1,
optional=false,
self=false,
unqualified=null,
452444366
)
我不知道为什么 HK2 Container 忽略了我的 AbstractBinder 中的注册!有人可以帮我吗?谢谢!
解决方案
推荐阅读
- swift - Eureka-ios:如何通过 if 语句更改 $0.options
- api - 有没有办法从 Itunes Search API 获取 pageCount?检索电子书时?
- angular - 如何使用角度 mat-nav 材质创建嵌套菜单?(更新)
- python - 使用 python 和 matplotlib 获取打印在条形图顶部的值?
- swift - Swift字符串截取上一段字符
- python - 如何在 Pandas python 中使用另一个数据框替换数据框中的单词
- hyperledger-fabric - 无法与账本交互(调用和查询仅在世界状态(couchdb)上发生)
- algorithm - 如何覆盖平面中具有恒定半径的不相交圆的一组圆?
- python - 如何反转 plt.barh 的方向?
- c++ - 错误:没有匹配的成员函数调用'upper_bound' => 仅在 macOS => Windows 和 Linux 上都可以