根据Spring文档,当bean的作用域为“prototype”时,spring不管理其对象的完整生命周期。更具体地说,不会调用销毁生命周期回调。客户端代码必须执行所需的清理。 spring文档还建议为此目的使用自定义bean后处理器。但是“BeanPostProcessor”接口仅包含bean初始化之前和之后的回调方法。没有解析回调的方法。那么在何处以及如何释放由原型范围的bean获得的资源?
答案 0 :(得分:3)
您正在寻找的是DestructionAwareBeanPostProcessor,它是BeanPostProcessor的子接口。
您可以自己创建该接口的新实现,或者使用其实现类之一,例如CommonAnnotationBeanProcessor。
答案 1 :(得分:1)
终止原型范围bean的唯一干净方法是显式调用它的一些“destroy”方法来处理资源。 您也可以使用Phantom References。 Here是关于不同类型的引用的更多信息。