Spring Boot 启动执行某个方法的三种实现方式
Spring Boot 启动执行某个方法的三种实现方式
第一种方式
@PostConstruct 注解解释
此种方式应该是最简单的方式,直接在方法上面注入,但是会影响服务提供,比如这个方法要执行三分钟 那么在这三分钟之内是无法提供服务的,这个方法是在服务初始化后之前运行, 所以此方法运行不结束,服务就无法初始化, 在这过程路也无法提供服务!
具体实现
@PostConstruct
public void StartImmediateExecution(){
System.out.println("第一种方式,应该也是最简单的方式(@PostConstruct注解)");
}
第二种方式
ApplicationListener 监听解释
是通过监听接口方式启动,服务已经初始化过,此时不影响服务启动,并且启动之后可以正常提供服务!
具体实现
@Component
public class StartImmediateExecutionListener implements ApplicationListener<ContextRefreshedEvent> {
@Override
public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
System.out.println("第二方式,是通过监听接口方式启动");
}
}
第三种方式
CommandLineRunner 监听解释
也是通过监听接口方式,启动服务,执行方式时仍然提供服务,服务初始化之后,执行方法!
具体实现
@Component
public class StartImmediateExecutionCommandLineRunner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("第三种也是监听接口方式,启动服务...");
}
}
三种方式的执行顺序
比较三种实现方式的执行顺序,如下所示: