springboot启动时执行任务CommandLineRunner
本文内容纲要:
#SpringBoot中CommandLineRunner的作用
平常开发中有可能需要实现在项目启动后执行的功能,SpringBoot提供的一种简单的实现方案就是添加一个model并实现CommandLineRunner接口,实现功能的代码放在实现的run方法中
#简单例子
```java
packageorg.springboot.sample.runner;
importorg.springframework.boot.CommandLineRunner;
importorg.springframework.stereotype.Component;
@Component
publicclassMyStartupRunnerimplementsCommandLineRunner{
@Override
publicvoidrun(String...args)throwsException{
System.out.println(">>>>>>>>>>>>>>>服务启动执行,执行加载数据等操作<<<<<<<<<<<<<");
}
}
```
#如果有多个类实现CommandLineRunner接口,如何保证顺序
SpringBoot在项目启动后会遍历所有实现CommandLineRunner的实体类并执行run方法,如果需要按照一定的顺序去执行,那么就需要在实体类上使用一个@Order注解(或者实现Order接口)来表明顺序
```
packageorg.springboot.sample.runner;
importorg.springframework.boot.CommandLineRunner;
importorg.springframework.core.annotation.Order;
importorg.springframework.stereotype.Component;
@Component
@Order(value=2)
publicclassMyStartupRunner1implementsCommandLineRunner{
@Override
publicvoidrun(String...args)throwsException{
System.out.println(">>>>>>>>>>>>>>>服务启动执行2222<<<<<<<<<<<<<");
}
}
```
```
packageorg.springboot.sample.runner;
importorg.springframework.boot.CommandLineRunner;
importorg.springframework.core.annotation.Order;
importorg.springframework.stereotype.Component;
@Component
@Order(value=1)
publicclassMyStartupRunner2implementsCommandLineRunner{
@Override
publicvoidrun(String...args)throwsException{
System.out.println(">>>>>>>>>>>>>>>服务启动执行111111<<<<<<<<<<<<<");
}
}
```
控制台显示
```服务启动执行11111111<<<<<<<<<<<<<
服务启动执行22222222##标题##<<<<<<<<<<<<<
```
根据控制台结果可判断,@Order注解的执行优先级是按value值从小到大顺序。
本文内容总结:
原文链接:https://www.cnblogs.com/myblogs-miller/p/9046425.html