所谓系统启动任务,是在系统启动时执行的一些操作,一般而言只在系统启动之时执行,并且一般只执行一次。比如加载配置文件、数据库初始化操作等。
Spring Boot针对系统启动任务,提供了两种解决方案:一是实现CommandLineRunner接口另一种方式是实现ApplicationRunner接口。
本文针对CommandLineRunner方式进行说明。
Spring Boot项目在启动时,会遍历所有CommandLineRunner实现类并调用其中的run()方法。
如果系统中有多个CommandLineRunner实现类,可以通过@Order()注解指定实现类的调用顺序,数值越小越先执行。
MyCommandLineRunner1
@Component
@Order(1)
@Slf4j
public class MyCommandLineRunner1 implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
log.info("Runner1>>>" + Arrays.toString(args));
}
}MyCommandLineRunner2
@Component
@Order(1)
@Slf4j
public class MyCommandLineRunner2 implements CommandLineRunner {
@Override
public void run(String... args) {
log.info("Runner2>>>" + Arrays.toString(args));
}
}idea配置入口参数
@Order(1)用来描述CommandLineRunner的执行顺序,值越小越先执行。run()方法的参数是系统启动时传入的参数。
好文章