场景
某些情况下需要再服务启动时执行部分代码,有很多实现方式,这里讲解实现CommandLineRunner接口实现。
方法
自定义类实现CommandLineRunner并且重写run方法。
code实现
自定义方法Runner.java
@Component
public class Runner implements CommandLineRunner{
private final Logger _logger = LoggerFactory.getLogger(this.getClass());
@Override
public void run(String... strings) throws Exception {
_logger.info("服务启动时执行此方法");
}
}
自定义方法Runner1.java
@Component
@Order(value = 1)
public class Runner1 implements CommandLineRunner{
private final Logger _logger = LoggerFactory.getLogger(this.getClass());
@Override
public void run(String... strings) throws Exception {
_logger.info("服务启动时执行此方法:Runner1");
}
}
自定义方法Runner2.java
@Component
@Order(value = 2)
public class Runner2 implements CommandLineRunner{
private final Logger _logger = LoggerFactory.getLogger(this.getClass());
@Override
public void run(String... strings) throws Exception {
_logger.info("服务启动时执行此方法:Runner2");
}
}
入口
@SpringBootApplication
public class SpringBootRunnerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootRunnerApplication.class,args);
}
}
运行效果
项目结构图
分析
当有多个自定义方法实现CommandLineRunner方法时,设置顺序Order,数字越小执行优先级越高,默认Order:2147483647