CommandLineRunner作用
需要实现在服务启动后执行的功能,SpringBoot提供的一种简单的实现方案就是实现
CommandLineRunner
接口,实现功能的代码放在实现的run方法中
栗子
SpringBoot在项目启动后会遍历所有实现CommandLineRunner的实体类并执行run方法,如果需要按照一定的顺序去执行,那么就需要在实体类上使用一个@Order注解(或者实现Order接口)来表明顺序;执行优先级是按value值从小到大顺序。
package org.springboot.sample.runner;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component
@Order(value=2)
public class MyRunner1 implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("MyRunner1 was run.... Order:2");
}
}
package org.springboot.sample.runner;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component
@Order(value=1)
public class MyRunner2 implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("MyRunner2 was run.... Order:1");
}
}
结果
MyRunner1 was run… Order:2
MyRunner2 was run… Order:1