我已经按照Michal的指南回答了这个问题[1]关于实现自定义注释的注释,以便将任意内容注入资源方法。这个(要点)[2]包含一个从jersey-quickstart-grizzly2
原型改编而来的简约测试平台。我将在下文中提及它。
我遇到了一些问题:
我的解析器是参数化类型(或者至少它会让事情变得更清晰,在我看来)因此我不能像Michal所说的那样在我的活页夹中bind
。
// Instead of the suggested:
// bind(MyInjectionResolver.class).to(new TypeLiteral<InjectionResolver<MyAnnotation>>() {}).in(Singleton.class);
// I do:
bind(myInjectionResolverObject).to(new TypeLiteral<InjectionResolver<MyAnnotation>>() {});
当我在资源方法中使用MyAnnotation
时,我在服务器启动时收到以下警告(但服务器仍然启动):
WARNING: The following warnings have been detected: WARNING: A HTTP GET method, public java.lang.String com.example.MyResource.get02(java.lang.Integer,java.lang.String), should not consume any entity.
当我请求资源(curl -X GET http://localhost:8080/myresource/01/aa
)时,我得到的是02: value = aa; providedValue = null
而不是预期的02: value = aa; providedValue = 123
。
永远不会执行MyResolver.resolve
方法(但会执行MyBinder.configure
)。
(这与测试平台应用程序无关,但我在稍微复杂的代码中遇到了问题:资源方法永远不会执行,服务器会以500 No content to map to Object due to end of input
响应)
关于我可能做错什么的任何想法?