前言
做项目的时候 总是会遇到各种各样需要启动处理的需求
例如加载热数据、初始化环境、等等
spring boot 也提供了很多初始化的口子
这里干脆统一记录一下 方便后续查阅
方案比较
名称 | 说明 | 备注 |
---|---|---|
CommandLineRunner | 实现CommandLineRunner接口 | 会在web容器启动后调用 |
@PostConstruct | 使用注解包装函数 | 会在web容器启动前调用 |
事件监听 | 利用spring应用的事件来处理 | 选择合适的事件, 参考: spring-boot2应用事件监听笔记 |
SpringApplication.run()之后加载 | 在main函数中执行加载 |
示例
继承commandLineRunner方式
1 | package com.ming.base; |
@PostConstruct方式
1 | package com.ming.base; |
spring application事件监听方式
参考文档: spring-boot2应用事件监听笔记
选择合适的 事件即可 示例选择的为启动失败事件
1 | package com.ming.base.event; |
main函数中加载
- 此处尽量不要做耗时较长的加载项 或者丢进线程池执行 不要直接main线程执行
1 | package com.ming; |
总结
启动加载 一般之用来加载一些简单的业务 如预热数据 如一些通知之类的操作
一般的话 建议使用 前三种方式
事件监听更加精细一点