SpringBoot入坑指南之三:业务初始化
概述 在实际项目开发过程中,有时候需要在服务启动时进行一些业务初始化操作,这些操作只需要在服务启动后执行一次,那么通过Spring Boot如何实现该需求呢? Spring Boot提供了ApplicationRunner和CommandLineRunner两种服务接口,这两种服务接口都可以实现上面的业务需求,本文将对这两种服务接口实现进行介绍。 ApplicationRunner与CommandLineRunner 异同点 相同点 两者均在服务启动完成后执行,并且只执行一次。 两者都能获取到应用的命令行参数。 两者触发执行的时间点是一致的。 不同点 虽然两者都是获取到应用的命令行参数,但是ApplicationRunner获取到的是封装后的ApplicationArguments对象,而CommandLine获取到的是ApplicationArguments中的sourceArgs属性(List<String>),即原始参数字符串列表. 执行顺序 很多误认为CommandLineRunner会先于ApplicationRunner执行,但是实际上两者是一起触发执行的,可以阅读SpringApplication.class方法中的源码 1.SpringApplication.class中的run方法,会在执行完一些列初始化工作之后