公共静态无效主要:
ConfigurableApplicationContext ctx = new ClassPathXmlApplicationContext("conf.xml");
ctx.start()
在 conf.xml 中:
<bean id="lifeBean" class="LifeBean"/>
在 LifeBean.java
public class LifeBean implements Lifecycle {
private boolean isRunning=true;
@Override
public void start() {
System.out.println("Start");
}
@Override
public void stop() {
System.out.println("Stop");
}
@Override
public void isRunning() {
return isRunning;
}
}
输出去了
INFO: Starting beans in phase 0.
但是 start 和 stop 方法没有输出。
它应该如何工作?我想看一个例子,其中有启动和停止方法的输出到控制台,如果这当然是可能的,否则我可能不明白使用生命周期的原理。
该方法
start
没有被调用,因为isRunning
总是返回true
(这是合乎逻辑的 - 如果 bean 已经在运行,为什么还要运行它?)。isRunning
您可以通过使用值初始化并在和false
方法中更改其值来解决此问题。start
stop
stop
反过来,由于缺少stop
上下文方法调用,该方法不会被调用。您可以通过调用stop
上下文或使用 try-with-resources 来解决此问题。