有没有办法让Guice保留注释? Guice不支持这个(还)

问题描述 投票:1回答:1

我试图迭代所有由接口Bar注释的类,用Guice的Injector.createInstance初始化它们,并用Dropwizard Jersey服务器注册它们。

然而,Guice的Injector.createInstance方法似乎丢弃了JAX-RS以及每个类的自定义注释。出于某种原因,Guice保留的唯一内容是@MediaType注释。 @Path注释丢失,这会阻止Jersey正确处理HTTP请求。

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

java annotations jax-rs guice
1个回答
2
投票

Guice doesn't support this (yet)

Guice有一个open issue on this topic超过10年,它没有解决,可能永远不会。

唯一的解决方法是在注释上使用@Inherited注释。

但是你提到你使用现有的注释,而不是自定义注释,所以让我们检查它们:@Consumes@Inherited(太棒了!),@Produces(也很棒!)也是如此,但是@Path不是(booh!),所以确实@Path不是' t出现在你的Guice代理上。

我能给你的唯一建议是摆脱你的Guice-AOP(TypeListener)。如果你能做到这一点,那么你很可能没有任何Guice代理,你的方法将在top对象上,因此对Jersey可见。

© www.soinside.com 2019 - 2024. All rights reserved.