我已经找到一个 previous SF question关于这个问题,我相信设置 init-method
和 destroy-method
属性就足够了。但我希望以不同的方式提出这个问题,以加深我的理解。
如果我理解正确,实现 org.springframework.context.Lifecycle
的类在网络应用上下文(即 org.springframework.web.context.support. XmlWebApplicationContext
) 比其他应用程序上下文?之所以这样做,是因为 XmlWebApplicationContext
的 start()
(将启动包含的生命周期 bean)将在加载上下文配置文件之前执行。
这是正确的吗?
最佳答案
Lifecycle
接口(interface)应该由想要参与容器 生命周期的 bean 实现。这主要是为了由容器本身实现(参见 docs here ),尽管这些容器内的 beans 也可以选择实现它,并且启动/停止信号将传播给它们。
start()
和stop()
方法本质上是通知容器刚刚启动,或者即将停止。
我正在努力为应用程序组件找到一个好的用例。业务对象应该只关心它们自己的生命周期,而不是容器的生命周期。一个很好的理由是,当您使用非单例范围(例如请求范围)时,bean 的生命周期独立于容器的生命周期。
关于java - Spring bean,XmlWebApplicationContext 中的生命周期(Web 上下文),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2315800/