【发布时间】:2011-02-18 01:57:30
【问题描述】:
可以使用属性“destroy-method”。
首先,即使我在“destroy-method”属性中输入不存在的方法名称,
Spring 初始化完成得很好(已经很奇怪了!)。
接下来,当一个bean有一个“原型”作用域时,那么我想它必须在应用程序之前被销毁
已关闭。这不会发生,在我的情况下根本不会调用它。
不过,在提取这个 bean 之后,我可以显式调用这个方法,它就完成了它的工作。
您能解释一下为什么在我的 Spring 2.5 案例中从未调用此方法吗?
附言该方法存在,它是公共的并且没有参数。
这似乎比我想象的要困难。
问题是每当上下文关闭时都会调用这个destroy方法,并且 这种情况很少见。
我的问题是这样的:
我有一个网络应用程序。我有一个“原型”范围的 bean。
我需要的是当当前会话关闭时,这个destroy方法被Spring自动调用了。
我可以手动完成,但是有什么解决方案可以让 Spring 完成这项工作吗?它会在会话被销毁后销毁 bean,Spring 有可能在销毁之前调用该 bean 上的方法吗?
附言Spring 不管理原型 bean 的生命周期,因此 Spring 不会销毁它们 :)
【问题讨论】:
-
也许你应该试着看看方面
-
你能解释一下这个 bean 的作用吗,为什么你需要在每个会话中销毁它,等等?我有一种感觉,您可能会根据您认为需要解决的问题提出问题,但真正的问题/问题可能有一个更简单的解决方案。例如,这个 bean 是否处理某种资源(例如数据库连接)?
-
@matt b 假设,当会话关闭时,这个 bean 必须记录一条语句“我正在被销毁”。我现在看到 Spring 不处理原型,所以只有一种方法:在 servlet 中手动进行。 Spring 在这里帮不上什么忙。
-
这是您用例的全部内容吗?如果是这样,只需使用 HttpSessionListener。
-
@Espen @matt b 我只需要一个会话范围! Spring 管理它,当然我可以使用它来代替“原型”。太棒了!
标签: java spring scope javabeans