2012-11-26 27 views
0

我在我的应用程序中创建了一个自定义范围,它实现org.springframework.beans.factory.config.ScopeSpring Custom Scoped Bean - 销毁回调

作为这一部分,我必须实现下面的方法,以便在我的自定义作用域bean上正确调用PreDestroy方法。

public void registerDestructionCallback(String name, Runnable callback) { 
} 

的方法的Javadoc不说清楚,我似乎失去了约,我应该在这个方法写什么代码。

有人可以帮忙吗?

回答

3

这取决于您的自定义作用域实际执行的操作,以及是否将此作用域用于DisposableBean,具有destroy-method的Bean和DestructionAwareBeanPostProcessor。

在最简单的情况下,您不需要执行任何操作或仅记录一条警告,即不支持回调。

在更复杂的情况下,您需要处理常规自定义作用域生命周期之外的对象破坏。例如。当对象被销毁时,基于其到期时间或类似的事情(不像明确地调用Scope.remove(String name)方法)。

例如,对于会话范围的bean,此回调连接到HttpSessionListener.sessionDestroyed(..)事件。查看org.springframework.web.context.request.SessionScope课程的来源。