4-ApplicationRunner和CommandLineRunner

如果在Application运行之前需要执行一些代码,可以通过实现ApplicationRunner或者CommandLineRunner接口。接口只有一个run方法,会在SpringApplication.run(...)方法执行之前运行。其中ApplicationRunner可以访问ApplicationArguments参数信息;而CommandLineRunner可以访问原始的String[]参数。
如果实现接口的类有多个,还可以通过实现org.springframework.core.Ordered接口或则使用@Order(value=int_value)来控制执行顺序,int值越小优先级越高,默认值为Ordered.LOWEST_PRECEDENCE(2147483647)。
1,实现ApplicationRunner接口,并实现Ordered接口执行顺序

@Component
public class MyRunnerImplAppRunner implements ApplicationRunner,Ordered{

    @Override
    public void run(ApplicationArguments args) throws Exception {
        // TODO Auto-generated method stub
        System.out.println(this.getClass().getName()+" runs before application running");
        System.out.println("args ares "+args.getSourceArgs().toString());
    }

    @Override
    public int getOrder() {
        // TODO Auto-generated method stub
        return 1;
    }
}

2,实现CommandLineRunner接口,使用@Order注解指定运行顺序

@Component
@Order(value=4)
public class MyRunnerImplCmdRunner implements CommandLineRunner{

    @Override
    public void run(String... args) throws Exception {
        
        System.out.println(this.getClass().getName()+" running before application running");
        System.out.println("args are "+args.toString());
    }
}

运行结果:


image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,303评论 19 139
  • 在spring boot应用中,我们可以在程序启动之前执行任何任务。为了达到这个目的,我们需要使用CommandL...
    Java_Explorer阅读 12,652评论 2 8
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,816评论 18 399
  • 良朋邂逅话当年, 醉意绵绵对夜天。 彳亍悠悠听涧外, 斜晖脉脉照晴川。 新诗难抵旧诗味, 旧梦常期新梦前。 最是苍...
    丁怀超阅读 573评论 2 2
  • 昨天中午的时候,女儿一本正经的问我:“妈妈,今天去买菜的地方,有一个老阿伯,拿着一个拐棍,还有一个碗。他碗里有一些...
    容止若思阅读 392评论 0 0

友情链接更多精彩内容