- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试迭代由接口(interface) Bar
注释的所有类,使用 Guice 的 Injector.createInstance
初始化它们,并将它们注册到 Dropwizard Jersey 服务器.
但是,Guice 的 Injector.createInstance
方法似乎放弃了 JAX-RS 以及每个类上的自定义注释。由于某种原因,Guice 唯一保留的是 @MediaType
注释。 @Path
注释丢失,导致 Jersey 无法正确处理 HTTP 请求。
有没有办法强制 Guice 将这些类上的所有现有注释保留在其自己生成的实现中?请注意,注入(inject)器未配置为专门处理 Foo
的实例,但 Foo
的构造函数已标记为注入(inject)。
最佳答案
Guice 有一个 open issue on this topic十多年来,这个问题一直没有得到解决,而且可能永远不会得到解决。
唯一的解决方法是使用 @Inherited
对您的注释进行注释。
但是您提到您使用现有注释,而不是自定义注释,所以让我们检查一下它们:@Consumes
是@Inherited
(太棒了!),@Produces
也是如此。 (也很棒!),但是 @Path
不是(嘘!),所以您的 Guice 代理上确实不存在 @Path
。
我能给你的唯一建议是摆脱你的 Guice-AOP (TypeListener)。如果你能做到这一点,那么你很可能不会有任何 Guice 代理,并且你的方法将位于顶部对象上,因此对 Jersey 可见。
关于java - 有没有办法让 Guice 保留注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55467417/
我是一名优秀的程序员,十分优秀!