我从他对这个问题 [ 1 ] 的回答中遵循了 Michal 的指南,关于实现自定义注释以将任意事物注入资源方法。这个(要点)[ 2 ] 包含一个从jersey-quickstart-grizzly2
原型改编的简约测试平台。我将在下面的文本中提及它。
我遇到了几个问题:
我的解析器是参数化类型(或者至少在我看来,它会让事情变得更干净),因此我不能
bind
像 Michal 建议的那样在我的活页夹中使用它。// 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
)
关于我可能做错了什么的任何想法?