java - 有没有办法让 Guice 保留注释?

标签 java annotations jax-rs guice

我正在尝试迭代由接口(interface) Bar 注释的所有类,使用 Guice 的 Injector.createInstance 初始化它们,并将它们注册到 Dropwizard Jersey 服务器.

但是,Guice 的 Injector.createInstance 方法似乎放弃了 JAX-RS 以及每个类上的自定义注释。由于某种原因,Guice 唯一保留的是 @MediaType 注释。 @Path 注释丢失,导致 Jersey 无法正确处理 HTTP 请求。

有没有办法强制 Guice 将这些类上的所有现有注释保留在其自己生成的实现中?请注意,注入(inject)器未配置为专门处理 Foo 的实例,但 Foo 的构造函数已标记为注入(inject)。

最佳答案

Guice doesn't support this (yet)

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/

相关文章:

java - Android 中的 HTTP POST,URL 中带有下划线

java - 如何根据条件拆分正则表达式模式

java - 将数组传递给注释的语法

java - 语法错误,注释仅在源代码级别为 5.0 时可用 - Maven 中的 AspectJ

java - 如何指示从 Jersey 中的 REST 服务保存到浏览器的文件名?

http - 什么是 HTTP 响应实体标签?

java - 为 JerseyTest 配置带有 SSL 的 JettyTestContainer

java - 在 Java 中,你可以使用负数和子字符串吗?

java - Java 线程的未知行为

java - 映射 Stream<Collection<T>> 中的各个元素