Spring bean的DESTROY-METHOD属性和web应用程序"prototype"d bean

Eug*_*neP 3 java spring scope javabeans

可以得到属性"destroy-method".

首先,即使我将不存在的方法名称键入"destroy-method"属性,

Spring初始化完成得很好(已经很奇怪!).

接下来,当bean具有"原型"范围时,我认为它必须在应用程序之前销毁

关闭了.这不会发生,在我的情况下根本就没有调用过.

虽然,在提取这个bean之后,我可以明确地调用这个方法并且它可以完成它的工作.

你能解释为什么在我的Spring 2.5案例中从未调用过这个方法吗?

ps方法存在,它是公共的,没有参数.

我认为这似乎是一项更艰巨的任务.

问题是每当上下文关闭时都会调用此destroy方法,这是一种罕见的情况.

我的问题是:

我有一个网络应用程序.我有一个"原型" - 豆角.

我需要的是当前会话关闭时,Spring会自动调用这个destroy方法.

我可以手工完成,但有没有解决方法如何让Spring做这个工作呢?它会在会话被销毁后销毁bean,Spring可能会在销毁之前调用该bean上的方法吗?

ps Spring不管理原型bean的生命周期,所以Spring不会破坏它们:)

Esp*_*pen 8

Spring容器不管理原型bean.

参考文档的片段:

因此,尽管无论范围如何都在所有对象上调用初始化生命周期回调方法,但在原型的情况下,不会调用已配置的销毁生命周期回调.

如果可能,请尝试请求或会话范围.

最终丢弃HTTP会话时,也会丢弃作用于该特定HTTP会话的bean.

顺便说一句:如果你正在使用的会话和请求范围只能基于web的ApplicationContextXmlWebApplicationContext