在Spring javadoc中说,"请注意,Lifecycle接口仅支持顶级单例bean." 这里的URL
我的LifecycleBeanTest.xml描述bean如下:
<beans ...>
<bean id="lifecycle" class="tests.LifecycleBean"/>
</beans>
Run Code Online (Sandbox Code Playgroud)
所以它看起来很"热"和"单调".
这是什么意思?如何让Spring知道我的bean实现Lifecycle并用它做点什么?
假设我的main方法在Spring中看起来如下
public static void main(String[] args) {
new ClassPathXmlApplicationContext("/tests/LifecycleBeanTest.xml").close();
}
Run Code Online (Sandbox Code Playgroud)
所以,它实例化上下文然后立即关闭它.
我可以在我的配置中创建一些bean,这会延迟close()执行直到应用程序执行所有操作吗?那么主方法线程等待应用程序终止?
例如,以下bean不按我想象的方式工作.也start()没有stop()被称为.
package tests;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.Lifecycle;
public class LifecycleBean implements Lifecycle {
private static final Logger log = LoggerFactory.getLogger(LifecycleBean.class);
private final Thread thread = new Thread("Lifecycle") {
{
setDaemon(false);
setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
log.error("Abnormal thread …Run Code Online (Sandbox Code Playgroud)