【问题标题】:Guice and non-Singleton ServletsGuice 和非单例 Servlet
【发布时间】:2012-09-06 20:41:04
【问题描述】:

我们如何在 Guice 中使用非单例 servlet 或处理程序,例如,我想为每个请求创建新实例并在处理请求后立即销毁它或将其交给垃圾收集器。

我不想将 ii 作为单例保存在内存中,也不想重复用于其他未来的请求。

我想可能是通过使用 bind() 函数,

RGDS

【问题讨论】:

    标签: java jakarta-ee servlets guice guice-servlet


    【解决方案1】:

    你想use RequestScope

    我通常使用带范围的提供程序方法,因此您的代码看起来像

    public class FooModule extends AbstractModule {
      @Override protected void configure() {
        // set up bindings
      }
    
      @Provides
      @RequestScoped
      PerRequestObject providePerRequestObject() {
        return new PerRequestObject(...);
      }
    }
    

    一定要install ServletModulesetup the GuiceFilter 否则这将不起作用!

    【讨论】:

    • 不,我的问题是如何配置非单调Servlet
    • 我很困惑。您说“我想为每个请求创建新实例并在处理请求后立即将其销毁或将其提供给垃圾收集器。我不想将 ii 作为单例保留在内存中或重用于其他未来的请求。”这正是这个答案要做的。我不明白您所说的“如何配置非单调 Servlet”是什么意思。请求范围是每个请求。不涉及单例。
    • 我的问题是如何配置非单调 Servlet,我想创建新的 servlet 实例,以防第一个仍在处理中的新请求,而不是在 servlet 使用的对象内
    • 好像每个servlet类容器只创建一个实例,我想改一下
    【解决方案2】:

    你尝试过@SessionScoped 吗?

    【讨论】:

      猜你喜欢
      • 2012-10-20
      • 2012-01-06
      • 2013-07-09
      • 1970-01-01
      • 1970-01-01
      • 2018-05-13
      • 1970-01-01
      • 1970-01-01
      • 2021-04-03
      相关资源
      最近更新 更多