【SpringBoot应用篇】Spring Boot中CommandLineRunner接口的作用
实现
CommandLineRunner
接口的 Component类会在所有 Spring Beans都初始化之后,SpringApplication.run() 之前执行run方法,适合预加载类及其它资源,比如加载配置文件,加载执行流,定时任务等;也可以使用ApplicationRunner,使用方法及效果是一样的。
@PostConstruct
的启动时间是在容器初始化当前Bean时执,SpringApplication.run()之前执行
启动类 SpringApplication.run()
源码中有体现;
我们可以通过调整@Order的值来调整类执行顺序的优先级,即执行的先后;当然也可以将@Order注解更换为Ordered接口,效果是一样的
@Component
@Order(1)
public class BlackPersion implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("----BlackPersion----");
}
}
@Component
@Order(0)
public class YellowPersion implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("----YellowPersion----");
}
}
@SpringBootApplication
public class CommonBootStrap {
public static void main(String[] args) {
SpringApplication.run(CommonBootStrap.class, args);
}
}