Spring Boot 笔记之SpringApplication(二):Spring Boot事件

 
 

打印出source:有2个事件,一个是ContextRefreshedEvent、一个是PayloadApplicationEvent

aed5d082d8f574f01b3075e9fd58ed42f4c.jpg

可以看出来他们的事件源是同一个。

自定义事件:

7640cdb447d9bdbcfb1d4e0972d757d4a18.jpg

输出了3个事件,包括自定义事件。

关闭事件:

b5ee0056f0878b036bd9b162f5d7aa9786b.jpg

又出来了一个事件。

b7183e3932227099829ba41a5f130fe9c5c.jpg

可以通过泛型的方式对某一个事件进行监听。

 

Spring Boot事件

Spring事件

Spring内部发送事件
`ContextRefreshedEvent`
  • ApplicationContextEvent

    • ApplicationEvent

refresh()->finishRefresh()->publishEvent(new ContextRefreshEvent(this))

ContextClosedEvent

  • ApplicationContextEvent

    • ApplicationEvent

close()->doClose()->publishEvent(new ContextClosedEvent(this));

事件最终是由这些方法显示调用的。

Spring事件都是ApplicationEvent类型的。

自定义事件

PayloadApplicationEvent

Spring事件都是ApplicationEvent类型

发送Spring事件通过AbstractApplicationContext#multicastEvent(org.springframework.context.ApplicationEvent, org.springframework.core.ResolvableType)

Spring事件的类型ApplicationEvent

Spring事件监听器ApplicationListener

Spring事件广播器ApplicationEventMulticaster

  • 实现类SimpleApplicationEventMulticaster

     

Spring事件理解为消息

ApplicationEvent相当于消息内容

ApplicationListener相当于消息消费者、订阅者

ApplicationEventMulticaster相当于消息生产者、发布者

4daae359c91dc931c615bb462c279cdc9af.jpg

059cf47f99a14f9b0e18a8357ae8d1fd2c4.jpg

a3917d905e1fa5d228c3970077cf251e1f4.jpg

我们写一个简单的例子:

0bc0a1c4722e6e9753f6fa8e70fbddc7a21.jpg

去官网看一下Spring事件到底是个什么东西。

51377a5aac90c3b3b5be6152815414ad6fb.jpg

Spring  Boot事件监听示例

加一个简单的监听器:

4bd1184a6fe7584b815e78a484131fc2acf.jpg

61010dca1d45f21d1d8d0067ee2f882c408.jpg

a6bf7b0d96a2a8ab25d173138643354603a.jpg

这个地方跟视频中有差异,视频中没有结束进程,但是我自己写demo运行,结束进程了。后来我让朋友在他那边创建了个项目,把这个代码贴给他,他那边也没有结束进程。这个是怎么回事呢?

1.ApplicationStartingEvent

2.ApplicationEnvironmentPreparedEvent

3.ApplicationPreparedEvent

4.ContextRefreshedEvent

5.ApplicationStartedEvent

6.ApplicationReadyEvent

7.ContextClosedEvent

自己的demo运行结果是这7个,视频中是这7个,

c6fe7e0b54cb7d9354864f0444e5c41bc60.jpg

由此可以推断出我的demo进程结束而视频中的没有,是因为jar包不一样导致的。

视频中示例加上close后,出现了8个:

d01b669c3256442101d5e967be5e3f9ee1c.jpg

f5f9f4b90191fb8d0433742e040d2a801be.jpg

74d4276babd85026820a35061d39ed126ff.jpg

c19f4896c2f3fbb10e7f90d33e535978e7a.jpg

421492c8043137161ef7dc0db787bf1a838.jpg

3c41cd8996eb1e82ef98afc274dc788ce12.jpg

 

 

 

转载于:https://my.oschina.net/u/3944601/blog/3058025

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值