gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:52:53 25 4
gpt4 key购买 nike

我正在尝试迭代由接口(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com