springboot启动时执行任务CommandLineRunner

# SpringBoot中CommandLineRunner的做用
> 日常开发中有可能须要实如今项目启动后执行的功能,SpringBoot提供的一种简单的实现方案就是添加一个model并实现CommandLineRunner接口,实现功能的代码放在实现的run方法中
# 简单例子
``` java
package org.springboot.sample.runner;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;java

@Component
public class MyStartupRunner implements CommandLineRunner {spring

@Override
public void run(String... args) throws Exception {
System.out.println(">>>>>>>>>>>>>>>服务启动执行,执行加载数据等操做<<<<<<<<<<<<<");
}springboot

}
```
# 若是有多个类实现CommandLineRunner接口,如何保证顺序
> SpringBoot在项目启动后会遍历全部实现CommandLineRunner的实体类并执行run方法,若是须要按照必定的顺序去执行,那么就须要在实体类上使用一个@Order注解(或者实现Order接口)来代表顺序
```
package org.springboot.sample.runner;ide

import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;接口


@Component
@Order(value=2)
public class MyStartupRunner1 implements CommandLineRunner {开发

@Override
public void run(String... args) throws Exception {
System.out.println(">>>>>>>>>>>>>>>服务启动执行 2222 <<<<<<<<<<<<<");
}io

}
```
```
package org.springboot.sample.runner;class

import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;import

@Component
@Order(value=1)
public class MyStartupRunner2 implements CommandLineRunner {model

@Override
public void run(String... args) throws Exception {
System.out.println(">>>>>>>>>>>>>>>服务启动执行 111111 <<<<<<<<<<<<<");
}

}```> 控制台显示```>>>>>>>>>>>>>>>服务启动执行 11111111 <<<<<<<<<<<<<>>>>>>>>>>>>>>>服务启动执行 22222222## 标题 ## <<<<<<<<<<<<<```> 根据控制台结果可判断,@Order 注解的执行优先级是按value值从小到大顺序。