Мне нужно, чтобы что-то произошло сразу после загрузки контекста приложения Spring.Насколько я понимаю, мне нужно создать реализацию жизненного цикла и поместить ссылку на компонент в контекст.Итак, у меня есть что-то вроде этого в моем контексте:
<bean id="mySpringLifecycle" class="com.my.project.MySpringLifecycle" />
Класс выглядит примерно так:
public class MySpringLifecycle implements Lifecycle {
@Override
public void start() {
System.out.println("The lifecycle has started.");
}
@Override
public void stop() {
return;
}
@Override
public boolean isRunning() {
return true;
}
}
Я не получаю ошибок, но MySpringLifecycle никогда не печатает "Жизненный цикл запущен. ", и мое приложение запускается просто отлично.
РЕДАКТИРОВАТЬ:
Это фиксированный код:
public class MySpringLifecycle implements SmartLifecycle {
private volatile boolean isRunning = false;
@Override
public boolean isAutoStartup() {
return true;
}
@Override
public void stop(Runnable r) {
System.out.println("STOPPED RUNNABLE!!!");
isRunning = false;
}
@Override
public void start() {
System.out.println("STARTED!!!");
isRunning = true;
}
@Override
public void stop() {
System.out.println("STOPPED!!!");
isRunning = false;
}
@Override
public boolean isRunning() {
return isRunning;
}
@Override
public int getPhase() {
return 1;
}
}
Как примечание яТакже хотел бы упомянуть альтернативное решение, которое я также могу использовать.В моем файле web.xml есть следующее:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
В ContextLoaderListener есть метод contextInitialized.Поэтому я создал собственную реализацию и добавил ее в web.xml.В моей реализации я расширил ContextLoaderListener, предоставил переопределение для метода contextInitialized, сначала вызвал super для этого метода, а затем выполнил свою собственную функциональность.Это выполняется только один раз и, кажется, работает хорошо.