是否有一个建议的模式来关闭/关闭用guice创建的对象?我的目标生命周期是:准备guice模块创建喷油器通过代码使用注入器获取对象( injector.getInstance(Foo.class) )...关闭所述对象持有的任何资源(文件句柄、tcp连接等)。我希望这是一个确定性的步骤(而不是“gc运行的某一天”)。
injector.getInstance(Foo.class)
tjjdgumg1#
我希望这是一个确定性的步骤(而不是“gc运行的某一天”)。抱歉,java对你来说是错误的语言。di框架不知道什么时候对一个对象的所有引用都消失了。只有总司令知道这一点。如果您有一个“closable”资源,那么使用try/finally模式来关闭它(见下文)。
Closable c = // ... try { c.use(); } finally { c.close(); }
现在回去兜售一点。guice可以知道作用域何时开始和结束。自定义范围完成后可以运行清理步骤。这个作用域甚至可以返回代理,因此如果您试图在允许的作用域之外访问这些对象,它们将是无效的。(oh和+1连接到colind-injector.:)编辑:guiceyfruit seams对生命周期有一些支持
1条答案
按热度按时间tjjdgumg1#
我希望这是一个确定性的步骤(而不是“gc运行的某一天”)。
抱歉,java对你来说是错误的语言。di框架不知道什么时候对一个对象的所有引用都消失了。只有总司令知道这一点。
如果您有一个“closable”资源,那么使用try/finally模式来关闭它(见下文)。
现在回去兜售一点。guice可以知道作用域何时开始和结束。自定义范围完成后可以运行清理步骤。这个作用域甚至可以返回代理,因此如果您试图在允许的作用域之外访问这些对象,它们将是无效的。
(oh和+1连接到colind-injector.:)
编辑:guiceyfruit seams对生命周期有一些支持