Spring Boot 启动输出一句话

admin 发布于:2022-05-09 10:35:57
阅读:loading
在Spring Boot启动过程中做一些程序初始化的动作是一个比较常规的事情,这里就以程序启动输出一句话作为实际监听启动过程中的业务逻辑。总共整理了几种常见的实现方式来分别实现(未使用Web环境依赖的Servlet、Filter),主要以Java和Spring环境相关的实现方式,参考实现方式如下:
(1)启动类输出,这种输出方式拥有绝对的最先触发和最后触发,实现参考如下:
(2)Spring组件的构造函数触发,构造函数的方式优先于其它各种触发逻辑;
(3)@PostConstruct注解触发,注意该注解是JDK内置的并非Spring提供,触发时机为当前组件类初始化完成后触发,实现参考如下:
(4)实现InitializingBean接口注册Bean组件,并重写afterPropertiesSet方法执行输出,实现参考如下:
(5)使用监听器Listener来监控服务器启动进度实现输出,在ApplicationListener的泛型支持的实现类中支持多种启动事件的监听,本文逻辑其中三种事件监听来验证实现,分别是:ApplicationStartedEvent、ApplicationReadyEvent、ContextRefreshedEvent,分别是:服务器启动后触发监听、服务器环境启动好触发监听、Spring容器上下文刷新触发监听,请注意上下文刷新事件ContextRefreshedEvent可能会执行多次,若使用该事件作为初始化的功能时需要处理重复执行的场景,实现参考如下:
(6)使用CommandLineRunner接口实现run方法实现输出,最初发现该种实现方式还是在翻阅Spring官网提供的子项目示例中看到的这种初始化方式,借着本次实践特整理出来,run方法的args参数等同于启动类的指定的args,实现参考如下:
(7)使用SoutApplicationRunner接口实现run方法实现输出,这种实现与上述CommandLineRunner接口的实现比较相似,推荐使用这种方式,因为在它的run方法参数类型为ApplicationArguments,除了可以拿到应用程序main函数启动时的args外,还可以获取到sourceArgs、optionNames、optionValues等启动参数,实现参考如下:
程序技术器
程序输出结果
其它注意
(1)一些同类型的组件的初始化执行顺序默认以扫描包的优先级触发,可使用@Order注解设置优先顺序;
(2)未使用BeanPostProcessor这种所有初始化均触发的启动实现;
源码工程下载:源码下载.zip;
点赞