我正在探索@RequestScoped
,并想知道是否有方法可以在不安装ServletModule
的情况下使用它。我使用的是Guice 3.0 + Jersey 1.17,可能不想使用GuiceContainer
& GuiceServletContextListener
。
我希望每个请求创建对象(注入),具体取决于Jersey请求中的一些用户输入。可能吗?什么是表演&如果我必须将现有的GuiceContainer
替换为Guice,请使用ServletContextListener
的安全注意事项?
如果有根据我的需要使用RequestScope
的方式,你能给我一些参考资料吗?
答案 0 :(得分:1)
可以将自定义Scope
实现绑定到预定义的范围注释,如@RequestScoped
。它确实意味着你不能使用ServletModule
,因为你不能将两个不同的实现绑定到相同的范围注释。
有关详细信息,请参阅documentation on Custom Scopes。为了确定范围,您需要编写代码来确定构成“请求”的内容,并在必要时触发进入和退出范围。
例如,在正常的Guice实施中,ServletScopes.RequestScope
使用ThreadLocal
initialized in GuiceFilter
来跟踪当前的请求。