日常开发中有时会要求 Spring Boot 启动完成后,初始化一些资源加载。Spring Boot 给我们提供了两个接口来实现:CommandLineRunner 接口或者 ApplicationRunner 接口。二者的区别在于传参不同,但功能上是一样的。
同时,可以使用 @Order 注解来实现资源加载的先后顺序,Order 注解的值越小,优先级越高:
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component
@Order(1)
public class MyCommandLineRunner implements CommandLineRunner {
@Override
public void run(String... args) {
System.out.println("...init resources by implements CommandLineRunner");
}
}
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component
@Order(2)
public class MyApplicationRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments applicationArguments) {
System.out.println("...init resources by implements ApplicationRunner");
}
}
启动程序,可以在控制台上看到: