一、简介
在开发的过程中,有时候我们的应用在启动后需要执行一些操作,比如初始化配置、加载模板文件等等。
我们可能第一个想到的是在启动类的 main 方法中调用,如果后续迭代过程中需要增加其他初始化的操作时,会导致启动类的main方法越来越长,代码看着不友好。
@SpringBootApplication
public class CwTsbDemoApplication {
public static void main(String[] args) {
SpringApplication.run(CwTsbDemoApplication.class, args);
...
}
}
在SpringBoot中,提供了一个接口 ApplicationRunner ,可以达到这样的效果。
二、ApplicationRunner
该接口中,只有一个 run 方法,我们只需写一个类,继承该接口,实现 run 方法即可。
@Component
@Order(1)
public class BootstrapManager implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("------ This is run method in ApplicationRunner ------");
}
}
说明:
-
该实现类,要注入到spring容器中,这里使用了 @Component 注解; -
同一个项目中,可以定义多个 ApplicationRunner 的实现类; -
存在多个 ApplicationRunner 的实现类时,可通过 @Order 注解来确定执行顺序,数值越小(值可为负数),越先执行 ; -
run 方法的参数,ApplicationArguments 可以获取到当前项目执行的命令参数(比如把这个项目打成jar执行的时候,带的参数可以通过 ApplicationArguments 获取到);
|