1

我在我的应用程序中创建了一个自定义范围,它实现了org.springframework.beans.factory.config.Scope.

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

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

该方法上的 javadocs 不是那么清楚,我似乎不知道应该在该方法中编写什么代码。

有人可以帮忙吗?

4

1 回答 1

4

这取决于您的自定义范围实际上做了什么,以及您是否将此范围用于 DisposableBean、具有销毁方法的 bean 和 DestructionAwareBeanPostProcessor。

在最简单的情况下,您不需要做任何事情或只记录不支持回调的警告。

在更复杂的情况下,您需要处理常规自定义范围生命周期之外的对象销毁。例如。当对象被销毁时,基于它的过期或类似的东西(不像对Scope.remove(String name)方法的显式调用)。

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

于 2012-11-26T16:34:24.663 回答