1 ApplicationContextInitializer 容器初始化之前执行
2 ApplicationListener 在容器的各个生命周期执行 ,通过事件区分,第一次执行在 SpringApplicationRunListener.starting 之前,最后一次执行在 SpringApplicationRunListener.running 之后
3 SpringApplicationRunListener 在容器的各个生命周期执行,通过方法区分 顺序如下
starting
在这以后执行的 ApplicationContextInitializer 的初始化方法
在这前后执行的 ApplicationContextInitializer 的初始化方法
contextLoaded
容器一启动这后面 就开始初始化容器里面的对象了
CommandLineRunner,ApplicationRunner 之后
4 CommandLineRunner,ApplicationRunner 在容器初始化以后执行 ,他们两个顺序由Order 决定
一般我们是在容器启动以后执行一些操作,所以一般使用 CommandLineRunner,ApplicationRunner ,并且他们只要加入spring容器就会执行,普通需求推荐实现这两个接口
ApplicationContextInitializer,ApplicationListener ,SpringApplicationRunListener 是容器不完整启动的生命周期就会执行,需要在 mete-info/spring.factories 里面配置 指定才生效