根据Spring文档,当一个bean被定义为“原型”时,spring不会管理其对象的整个生命周期。更具体地说,不调用销毁生命周期回调。客户端代码必须执行所需的清理。spring文档还建议使用定制的bean后处理器来实现此目的。但是"BeanPostProcessor“接口只包含beans初始化之前和之后的回调方法。没有描述回调的方法。那么在哪里以及如何释放通过原型作用域的bean获得的资源呢?
发布于 2011-11-17 01:57:55
你要找的是DestructionAwareBeanPostProcessor,它是BeanPostProcessor的一个子接口。
您可以自己创建该接口的新实现,也可以使用其实现类之一,如CommonAnnotationBeanProcessor。
发布于 2011-11-17 02:17:51
终止原型作用域bean的唯一干净方法是显式调用它的一些“销毁”-methods来释放资源。您也可以使用Phantom References。Here是关于不同类型的参考资料的更多信息。
https://stackoverflow.com/questions/8154736
复制相似问题