- SmartLifecycle 接口
说明:Spring 的IOC是我们最常用到的功能,能帮我们管理bean。但是我们有时需要在bean全部加载和初始化完毕之后,再做一些事情。这个接口就可以满足我们的需求。
SmartLifecycle 是一个接口。当Spring容器加载所有bean并完成初始化之后,会接着回调实现该接口的类中对应的方法(start()方法)。
Configuration
public class DriverManageConfig implements SmartLifecycle {
private final Logger log = LoggerFactory.getLogger(this.getClass());
private volatile boolean running;
@Override
public void start() {
if (running) {
return;
}
TriggerDriverRunThread.instance().start();
TriggerContainerRunThread.instance().start();
TriggerContainerStatusThread.instance().start();
running = true;
}
@Override
public void stop() {
running = false;
TriggerDriverRunThread.instance().stop();
TriggerContainerRunThread.instance().stop();
TriggerContainerStatusThread.instance().toStop();
}
/**
* 1. 只有该方法返回false时,start方法才会被执行。
* 2. 只有该方法返回true时,stop(Runnable callback)或stop()方法才会被执行。
*/
@Override
public boolean isRunning() {
return this.running;
}
}
- ApplicationRunner 接口
springboot项目在启动的时候,有时候需要在启动之后直接执行某一些代码
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
/**
* springboot项目在启动的
* 时候,有时候需要在启动之
* 后直接执行某一段代码
*/
@Component
@Order(1)
public class MyApplicationRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("在springboot启动之后,我被MyApplicationRunner类调用了");
}
}