# 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值從小到大順序。