我在我的应用程序中创建了一个实现org.springframework.beans.factory.config.Scope
的自定义范围。
作为其中的一部分,我必须实现下面的方法,以便在我的自定义范围bean上正确调用PreDestroy方法。
public void registerDestructionCallback(String name, Runnable callback) {
}
方法上的javadocs不是那么清楚,我似乎对于我应该在该方法中编写的代码感到迷茫。
有人可以帮忙吗?
答案 0 :(得分:4)
这取决于您的自定义作用域实际执行的操作以及您是否将此作用域用于DisposableBean,使用destroy-method和DestructionAwareBeanPostProcessor。
在最简单的情况下,您不需要执行任何操作,或只记录不支持回调的警告。
在更复杂的情况下,您需要处理超出常规自定义范围生命周期的对象销毁。例如。当对象被销毁时,基于其到期或类似的东西(与显式调用Scope.remove(String name)
方法不同)。
例如,对于会话范围的bean,此回调连接到HttpSessionListener.sessionDestroyed(..)事件。请参阅org.springframework.web.context.request.SessionScope
类的来源。