使用不带ServletModule的RequestScope

时间:2016-03-24 22:37:15

标签: jersey guice requestscope

我正在探索@RequestScoped,并想知道是否有方法可以在不安装ServletModule的情况下使用它。我使用的是Guice 3.0 + Jersey 1.17,可能不想使用GuiceContainer& GuiceServletContextListener

我希望每个请求创建对象(注入),具体取决于Jersey请求中的一些用户输入。可能吗?什么是表演&如果我必须将现有的GuiceContainer替换为Guice,请使用ServletContextListener的安全注意事项?

如果有根据我的需要使用RequestScope的方式,你能给我一些参考资料吗?

1 个答案:

答案 0 :(得分:1)

可以将自定义Scope实现绑定到预定义的范围注释,如@RequestScoped。它确实意味着你不能使用ServletModule,因为你不能将两个不同的实现绑定到相同的范围注释。

有关详细信息,请参阅documentation on Custom Scopes。为了确定范围,您需要编写代码来确定构成“请求”的内容,并在必要时触发进入和退出范围。

例如,在正常的Guice实施中,ServletScopes.RequestScope使用ThreadLocal initialized in GuiceFilter来跟踪当前的请求。