public static void main:
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 и stop в консоль, если это конечно возможно, а то я возможно не так понимаю принцип использования Lifecycle.
Метод start не вызывается, т.к. isRunning возвращает всегда true (что логично - зачем запускать бин, если он и так запущен?). Исправить это можно, инициализировав isRunning со значением false и изменяя её значение в методах start и stop.
Метод stop не вызывается, в свою очередь, из-за отсутствия вызова метода stop контекста. Исправить это можно, вызвав stop контекста, либо используя try-with-resources.
Продвижение своими сайтами как стратегия роста и независимости