使用googleguice的java生命周期管理

aamkag61  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(428)

是否有一个建议的模式来关闭/关闭用guice创建的对象?
我的目标生命周期是:
准备guice模块
创建喷油器
通过代码使用注入器获取对象( injector.getInstance(Foo.class) )
...
关闭所述对象持有的任何资源(文件句柄、tcp连接等)。我希望这是一个确定性的步骤(而不是“gc运行的某一天”)。

tjjdgumg

tjjdgumg1#

我希望这是一个确定性的步骤(而不是“gc运行的某一天”)。
抱歉,java对你来说是错误的语言。di框架不知道什么时候对一个对象的所有引用都消失了。只有总司令知道这一点。
如果您有一个“closable”资源,那么使用try/finally模式来关闭它(见下文)。

Closable c = // ...
try {
   c.use();
} finally {
   c.close();
}

现在回去兜售一点。guice可以知道作用域何时开始和结束。自定义范围完成后可以运行清理步骤。这个作用域甚至可以返回代理,因此如果您试图在允许的作用域之外访问这些对象,它们将是无效的。
(oh和+1连接到colind-injector.:)
编辑:guiceyfruit seams对生命周期有一些支持

相关问题