当前位置: 首页 > news >正文

网站制作珠海公司网站建设多久能学会

网站制作珠海公司,网站建设多久能学会,你们需要网站建设,网站做多少层级ApplicationListener是spring boot应用启动时的事件监听器。监听的事件有&#xff08;包括但不限于&#xff09;&#xff1a; &#xff08;1&#xff09;接下来&#xff0c;我们先通过一个例子实现自定义ApplicationListener&#xff1a; 监听器需要实现ApplicationListener<…

ApplicationListener是spring boot应用启动时的事件监听器。监听的事件有(包括但不限于):

(1)接下来,我们先通过一个例子实现自定义ApplicationListener:

监听器需要实现ApplicationListener<T>,参数类型为ApplicationEvent,表示监听所有事件,当然也可以将参数类型设置为单独的事件,下面这个只会接收ApplicationEnvironmentPreparedEvent事件:

(2)定义了监听器后,还需要配置一下,让spring boot启动时加载它,即配置"context.listener.classes"

(3)启动后可以看到,监听器监听了如下事件:

(4)源码分析,我们来看看自定义的监听器是怎么工作的:

ApplicationListener是采用观察者模式实现的,我们的启动时入口是执行SpringApplication.run方法

如下两处代码,分别是获取SpringApplicationRunListeners(这个是各个事件的发布者)和进行环境的准备,

在环境准备好后发布ApplicationEnvironmentPreparedEvent事件

虽然这里listeners是容器类,但默认只有一个EventPublishingRunListener,我们看一下它是怎么发布事件的,如下代码很明显,进行了一个事件的广播,但还没看到广播给谁,继续往下

这里可以看到getApplicationListeners(event, type),就是根据事件类型获取需要广播的ApplicationListener

在调试状态下,我们看一下getApplicationListeners(event, type)有哪些

发现只有6个ApplicationListener响应了ApplicationEnvironmentPreparedEvent事件,而且没有我们自定义的ApplicationListener,怎么回事呢?

实际上,我们的ApplicationListener是通过代理类执行的,即上面的DelegatingApplicationListener,我们可以看一下它怎么执行的:

上面代码可以看到代理类也监听了所有的事件,然后在ApplicationEnvironmentPreparedEvent事件时才初次响应,并且通过getListeners获取所有代理的ApplicationListeners,然后它自己实现了一个事件广播器,然后把获取的ApplicationListeners通过到addApplicationListener加入到广播器中,最后进行事件的广播转发。我们重点看一下getListeners,看是如何获取到我们自定义的ApplicationListeners的:

我们可以看到,是通过我们配置的context.listener.classes获得类名,然后通过反射实例化返回。

这样整个监听器的过程就完整了。我们注意到代理类是从ApplicationEnvironmentPreparedEvent开始响应的,所以之前的事件我们自定义的ApplicationListener是无法监听的。实际上前面只有一个ApplicationStartingEvent,此时应用才刚启动,也没啥好监听的。如果需要监听所有的事件可以在自己在spring.factories配置:

在resources下新建META-INF\spring.factoies,然后和spring的监听器配置一样配置自己定义的监听器,就可以啦

http://www.yayakq.cn/news/921695/

相关文章:

  • 学生个人网站建设方案书框架栏目蛋糕 网站 模板
  • 空间网站购买上海家居网站建设
  • 自己随便玩玩的网站怎么建设石景山广州网站建设
  • 上海中学门户网站英德网站建设
  • 建设注册管理中心网站铜陵网站制作公司
  • cnetos 做网站服务制作ppt的软件app
  • 推广网站实例wordpress流量统计
  • 广州专业网站建设性价比高网站模板用什么软件做
  • 网站推广是网站建设完成之后的长期工作。网上商城系统模板
  • 重庆智能网站建设公司全国网站建设
  • 绍兴建站服务雅安公司做网站
  • 门户网站建设管理淘宝运营多少钱一个月
  • 东阳网站建设价格wordpress装主题需要ftp
  • 退工在那个网站上做一般网站可以自己做商城吗
  • 茶陵网站建设全国一体化在线政务服务平台
  • 如何利用fortran语言建设网站专业网站建设质量推荐
  • 郑州的建设网站有哪些济南建站公司网站
  • python做网站实例公司注册流程及注意事项及细节
  • 西安网站建设哪家比较好食品饮料网站建设
  • 做网站排名seowordpress 简单幻灯片插件
  • 建设网站广州深圳松岗 网站建设
  • 网站开发市场分析东莞网页设计教程
  • 需要自己的网站需要怎么做引流推广是什么意思
  • 做网站卖设备找哪家好做网站云服务器选择多大带宽
  • 南宁建站官网dedecms 网站地图插件
  • 东莞网站网站建设简历生成器在线制作
  • 婚纱类网站素材域名拍卖网站
  • 个人网站优秀作品承德信息港
  • 克隆网站怎么导入wordpress网站谷歌优化怎么做
  • 网站建设服装项目设计书开发一个电商网站