首页 > 解决方案 > 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 中的注册!有人可以帮我吗?谢谢!

标签: javakotlinjerseyjax-rs

解决方案


推荐阅读