カスタム注釈と HK2 を使用して Resource メソッドに何かを挿入する方法を理解しようとしています。私は Spring webapp 環境にいるので、既存の helloworld-spring-webapp Jersey 2 の例を積み上げただけです。私の問題は、Resource メソッドが 2 回呼び出されることです。1 回目は注入が成功しますが、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);
}
バインダーの 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:
どこかで構成を見逃していませんか? なぜ2回呼び出されているのかわかりません。それを修正すれば、2回目の呼び出しでInjectionResolverが機能しないという問題は問題にならないと思います。