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