相关疑难解决方法(0)

是否可以在Guice的范围结束时自动清理资源?

假设我Closeable使用请求范围通过Guice注入了一个对象:

@Provides @RequestScoped
public MyCloseableResource providesMyCloseableResource(){
  return new MyCloseableResourceImpl();
}
Run Code Online (Sandbox Code Playgroud)

是否有可能连接一个清理方法,该方法close()在范围存在时自动调用我的资源,而不需要求助于自定义范围实现?

查看Guice wiki上的自定义范围实现指南,它显示应该创建和清理范围,如下所示:

/**
 * Runs {@code runnable} in batch scope.
 */
public void scopeRunnable(Runnable runnable) {
  scope.enter();
  try {
    // explicitly seed some seed objects...
    scope.seed(Key.get(SomeObject.class), someObject);
    // create and access scoped objects
    runnable.run();
  } finally {
    scope.exit();
  }
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法finally在内置范围(特别是会话和请求范围)中连接一些自定义清理代码.

如果不可能,可能会出现阻碍这种自动清理的问题吗?

我已经找到了在servlet容器中实现相同效果的方法,通过实现Filter来为每个请求创建和清理资源,这很有效,但我很好奇它是否可能与纯Guice一起使用.

java guice

17
推荐指数
1
解决办法
3029
查看次数

标签 统计

guice ×1

java ×1