所谓系统启动任务,是在系统启动时执行的一些操作,一般而言只在系统启动之时执行,并且一般只执行一次。比如加载配置文件、数据库初始化操作等。
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()
方法的参数是系统启动时传入的参数。
好文章