Spring:如何干净利落地终止原型范围的Bean?

2022-09-04 23:13:33

根据Spring文档,当一个豆子被限定为“原型”时,Spring不会管理其对象的整个生命周期。更具体地说,不调用销毁生命周期回调。客户端代码必须执行所需的清理。Spring 文档还建议为此目的使用自定义 Bean 后处理器。但是“BeanPostProcessor”接口只包括Bean初始化前后的回调方法。没有用于解构回调的方法。那么,从哪里以及如何释放通过原型范围的bean获得的资源呢?


答案 1

你要找的是DestructionAwareBeanPostProcessor,它是BeanPostProcessor的子接口。

您可以自己创建该接口的新实现,也可以使用其实现类之一,如 CommonAnnotationBeanProcessor。


答案 2

终止原型范围的Bean的唯一简单方法是显式调用其一些“destroy”方法来释放资源。您还可以使用幻像引用以下是有关不同类型的引用的更多信息。


推荐