我试图弄清楚如何使用自定义注释和 HK2 将某些东西注入 Resource 方法。因为我在 Spring webapp 环境中,所以我只是堆放在现有的 helloworld-spring-webapp Jersey 2 示例上。我的问题是,资源方法被调用了两次。第一次,注入成功,第二次,它没有。
InjectionResolver.resolve() 方法
@Override
public Object resolve(Injectee injectee, ServiceHandle<?> root) {
return "THIS HAS BEEN INJECTED APPROPRIATELY";
}
Binder.configure() 方法
@Override
protected void configure() {
bind(SampleInjectionResolver.class).to(new TypeLiteral<InjectionResolver<SampleParam>>() {}).in(Singleton.class);
}
Binder 的 ResourceConfig 注册
public MyApplication () {
register(new SampleInjectionResolver.Binder());
...
JerseyResource.getHello()
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getHello(@SampleParam String inject) {
System.err.println("EXECUTING!");
System.err.println("*******************************INJECTED: " + inject);
return inject;
}
SINGLE调用的服务器输出
EXECUTING!
*******************************INJECTED: THIS HAS BEEN INJECTED APPROPRIATELY
EXECUTING!
*******************************INJECTED:
我是否错过了某处的配置?我不明白为什么它被调用了两次。我假设如果我解决了这个问题,InjectionResolver 在第二次调用中不起作用的问题将不是问题。