我是春季用户。我开始阅读spring的源代码。
当我读取AbstractApplicationContext时,我发现有一个方法start(),我发现在初始化ApplicationContext时不会调用该方法。
我的问题: 1)方法的用法是什么?根据单词的(开始)含义,我认为它应该在ApplicationContext可以工作之前调用。但事实并非如此。
2)如何监听applicationContext开始工作的事件?在阅读完代码后,我发现该方法将发布ContextStartedEvent。但是,如果我只是初始化上下文,上下文仍然可以工作,不发布event.I无法监听事件以跟踪applicationcontext的开始。
答案 0 :(得分:2)
start
方法是Lifecycle接口的一部分,该接口在应用程序启动过程中被调用。
如果您希望在上下文启动时收到通知,您应该声明一个实现Lifecycle接口的bean。
public class org.example.MyLifecycle implements Lifecycle {
private boolean started = false;
public boolean isRunning() {
return started;
}
public void start() {
System.err.println("MyLifecycle starting");
started = true;
}
public void stop() {
System.err.println("MyLifecycle stopping");
started = false;
}
}
然后
<bean class="org.example.MyLifecycle"/>
除非在名为lifecycleProcessor
的上下文中有一个实现DefaultLifecycleProcessor接口的bean