1、应用场景
有时我们需要在应用程序启动时,执行一些初始化操作,类似@PostContruct注解的作用!如读取配置文件,加载数据至缓存,清除缓存等操作。SpringBoot为我们提供了ApplicationRunner和CommandLineRunner接口。当接口有多个实现类时,提供了@Order注解实现自定义执行顺序,也可以实现Order接口来定义顺序。(数字越小优先级越高,即优先执行)
ApplicationRunner中run方法的参数为ApplicationArguments,而CommandLineRunner接口中run方法的参数为String数组。想要更详细地获取命令行参数,那就使用ApplicationRunner接口
2、ApplicationRunner接口
@Component
@Order(2)
public class MyApplicationRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("MyApplicationRunner 执行了..."+ JSON.toJSONString(args.getSourceArgs()));
}
}
3、CommandLineRunner接口
@Component
@Order(1)
public class MyCommandLineRunner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("MyCommandLineRunner 执行了..." + JSON.toJSONString(args));
}
}
网友评论