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

可以得到属性“destroy-method”。

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

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

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

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

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

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

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

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

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

我的问题是:

我有一个网络应用程序。 我有一个“原型” – 豆角。

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

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

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

Spring容器不管理原型bean。

参考文档中的一个片段:

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

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

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

顺便说一句:会话和请求范围仅在您使用Web感知的ApplicationContext (如XmlWebApplicationContext时才XmlWebApplicationContext