
SpringBoot事件监听机制
发布日期:2021-05-07 13:38:52
浏览次数:18
分类:技术文章
本文共 3536 字,大约阅读时间需要 11 分钟。
注意一点!这是springboot的独有监听器,跟的监听器无关!
有四个重要的类对应不同的监听功能:
ApplicationContextInitializer、SpringApplicationRunListener、ApplicationRunner、CommandLineRunner 注意前两个需要配置在配置在META-INF/spring.factories中,后两个需要纳入到ioc容器中! 所以第一步就是实现这些接口: 前面两个:package org.lzl.bootjpa.listener;import org.springframework.context.ApplicationContextInitializer;import org.springframework.context.ConfigurableApplicationContext;public class HelloApplicationContextInitializer implements ApplicationContextInitializer { @Override public void initialize(ConfigurableApplicationContext applicationContext) { System.out.println("ApplicationContextInitializer....initialize"+applicationContext); }}
package org.lzl.bootjpa.listener;import org.springframework.boot.SpringApplication;import org.springframework.boot.SpringApplicationRunListener;import org.springframework.context.ConfigurableApplicationContext;import org.springframework.core.env.ConfigurableEnvironment;public class HelloSpringApplicationRunListener implements SpringApplicationRunListener { //注意要加该构造器!!!!!!!!! public HelloSpringApplicationRunListener(SpringApplication application,String[] args){ } @Override public void starting() { System.out.println("SpringApplicationRunListener.....starting...."); } @Override public void environmentPrepared(ConfigurableEnvironment environment) { Object o = environment.getSystemProperties().get("os.name"); System.out.println("springApplicationRunListener.....environmentPrepared....."+o); } @Override public void contextPrepared(ConfigurableApplicationContext context) { System.out.println("SpringApplicationRunListener.....contextPrepared...."); } @Override public void contextLoaded(ConfigurableApplicationContext context) { System.out.println("SpringApplicationRunListener.....contextLoaded...."); } @Override public void started(ConfigurableApplicationContext context) { System.out.println("SpringApplicationRunListener.....started...."); } @Override public void running(ConfigurableApplicationContext context) { System.out.println("SpringApplicationRunListener.....running...."); } @Override public void failed(ConfigurableApplicationContext context, Throwable exception) { System.out.println("SpringApplicationRunListener.....failed...."); }}
后面两个:
package org.lzl.bootjpa.listener;import org.springframework.boot.ApplicationArguments;import org.springframework.boot.ApplicationRunner;import org.springframework.stereotype.Component;@Componentpublic class HelloApplicationRunner implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println("Application...run...."); }}
package org.lzl.bootjpa.listener;import org.springframework.boot.CommandLineRunner;import org.springframework.stereotype.Component;import java.lang.reflect.Array;import java.util.Arrays;@Componentpublic class HelloCommandLineRunner implements CommandLineRunner { @Override public void run(String... args) throws Exception { System.out.println("commandLineRunner.....run...."+ Arrays.asList(args)); }}
至于前面两个字母在META-INF/spring.factories中配置:

org.springframework.context.ApplicationContextInitializer=\org.lzl.bootjpa.listener.HelloApplicationContextInitializerorg.springframework.boot.SpringApplicationRunListener=\org.lzl.bootjpa.listener.HelloSpringApplicationRunListener
现在已经配置完毕!启动ioc容器:出现下面的的东西:证明配置成功!

发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月04日 08时19分20秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
奇怪的分式(枚举 + 判断)
2019-03-04
Linux网络环境配置(设置ip地址)
2019-03-04
Idea使用Spring Initializr来快速创建springboot项目
2019-03-04
C++邻接表存储图的深度优先搜索
2019-03-04
C++实现Dijkstra算法(单源路径最短算法)
2019-03-04
Dijkstra算法的总结
2019-03-04
zoj 3964 - Yet Another Game of Stones
2019-03-04
前后端通信问题 —— SpringBoot+LayUI
2019-03-04
ubuntu中安装scikit-learn
2019-03-04
Ubuntu2004 向日葵安装笔记
2019-03-04
Ubuntu 安装后无法正常打开——进入grub安全命令行模式
2019-03-04
C/C++ new和delete使用注意事项
2019-03-04
Jmeter (一) ----环境搭建
2019-03-04
性能调优优化思路
2019-03-04
CodeBase(四)项目总结
2019-03-04
【ACM】HDU 5640 King‘s Cake
2019-03-04
java集合框架
2019-03-04
面向对象的三大特征
2019-03-04
SpringCloud和SprinBoot之间的关系
2019-03-04