日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring boot实战(第二篇)事件监听

發布時間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring boot实战(第二篇)事件监听 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

spring boot在啟動過程中增加事件監聽機制,為用戶功能拓展提供極大的便利。

支持的事件類型四種

ApplicationStartedEvent

ApplicationEnvironmentPreparedEvent

ApplicationPreparedEvent

ApplicationFailedEvent

實現監聽步驟:

1.監聽類實現ApplicationListener接口?
2.將監聽類添加到SpringApplication實例

ApplicationStartedEvent

ApplicationStartedEvent:spring boot啟動開始時執行的事件

創建對應的監聽類?MyApplicationStartedEventListener.java

?

package com.lkl.springboot.listener;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.context.event.ApplicationStartedEvent; import org.springframework.context.ApplicationListener;/*** spring boot 啟動監聽類* * @author liaokailin* @version $Id: MyApplicationStartedEventListener.java, v 0.1 2015年9月2日 下午11:06:04 liaokailin Exp $*/ public class MyApplicationStartedEventListener implements ApplicationListener<ApplicationStartedEvent> {private Logger logger = LoggerFactory.getLogger(MyApplicationStartedEventListener.class);@Overridepublic void onApplicationEvent(ApplicationStartedEvent event) {SpringApplication app = event.getSpringApplication();app.setShowBanner(false);// 不顯示banner信息logger.info("==MyApplicationStartedEventListener==");} }

?

?

?

?

在該事件中可以獲取到SpringApplication對象,可做一些執行前的設置.

?

Application.java類

?

package com.lkl.springboot;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;import com.lkl.springboot.listener.MyApplicationStartedEventListener;@SpringBootApplication public class Application {public static void main(String[] args) {SpringApplication app = new SpringApplication(Application.class); app.addListeners(new MyApplicationStartedEventListener());app.run(args);} }

?

?

?

ApplicationEnvironmentPreparedEvent

ApplicationEnvironmentPreparedEvent:spring boot 對應Enviroment已經準備完畢,但此時上下文context還沒有創建。

MyApplicationEnvironmentPreparedEventListener.java

?

package com.lkl.springboot.listener;import java.util.Iterator;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent; import org.springframework.context.ApplicationListener; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.MutablePropertySources; import org.springframework.core.env.PropertySource;/*** spring boot 配置環境事件監聽* @author liaokailin* @version $Id: MyApplicationEnvironmentPreparedEventListener.java, v 0.1 2015年9月2日 下午11:21:15 liaokailin Exp $*/ public class MyApplicationEnvironmentPreparedEventListener implementsApplicationListener<ApplicationEnvironmentPreparedEvent> {private Logger logger = LoggerFactory.getLogger(MyApplicationEnvironmentPreparedEventListener.class);@Overridepublic void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {ConfigurableEnvironment envi = event.getEnvironment();MutablePropertySources mps = envi.getPropertySources();if (mps != null) {Iterator<PropertySource<?>> iter = mps.iterator();while (iter.hasNext()) {PropertySource<?> ps = iter.next();logger.info("ps.getName:{};ps.getSource:{};ps.getClass:{}", ps.getName(), ps.getSource(), ps.getClass());}}}}

?

?

?

?

?

在該監聽中獲取到ConfigurableEnvironment后可以對配置信息做操作,例如:修改默認的配置信息,增加額外的配置信息等等~~~

ApplicationPreparedEvent

ApplicationPreparedEvent:spring boot上下文context創建完成,但此時spring中的bean是沒有完全加載完成的。

MyApplicationPreparedEventListener.java

?

package com.lkl.springboot.listener;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.context.event.ApplicationPreparedEvent; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationListener; import org.springframework.context.ConfigurableApplicationContext;/*** 上下文創建完成后執行的事件監聽器* * @author liaokailin* @version $Id: MyApplicationPreparedEventListener.java, v 0.1 2015年9月2日 下午11:29:38 liaokailin Exp $*/ public class MyApplicationPreparedEventListener implements ApplicationListener<ApplicationPreparedEvent> {private Logger logger = LoggerFactory.getLogger(MyApplicationPreparedEventListener.class);@Overridepublic void onApplicationEvent(ApplicationPreparedEvent event) {ConfigurableApplicationContext cac = event.getApplicationContext();passContextInfo(cac);}/*** 傳遞上下文* @param cac*/private void passContextInfo(ApplicationContext cac) {//dosomething()}}

?

?

?

?

?

在獲取完上下文后,可以將上下文傳遞出去做一些額外的操作。

在該監聽器中是無法獲取自定義bean并進行操作的。

ApplicationFailedEvent

ApplicationFailedEvent:spring boot啟動異常時執行事件?
MyApplicationFailedEventListener.java

?

package com.lkl.springboot.listener;import org.springframework.boot.context.event.ApplicationFailedEvent; import org.springframework.context.ApplicationListener;public class MyApplicationFailedEventListener implements ApplicationListener<ApplicationFailedEvent> {@Overridepublic void onApplicationEvent(ApplicationFailedEvent event) {Throwable throwable = event.getException();handleThrowable(throwable);}/*處理異常*/private void handleThrowable(Throwable throwable) {}}

?

?

?

?

?

在異常發生時,最好是添加虛擬機對應的鉤子進行資源的回收與釋放,能友善的處理異常信息。

在spring boot中已經為大家考慮了這一點,默認情況開啟了對應的功能:

?

public void registerShutdownHook() {if (this.shutdownHook == null) {// No shutdown hook registered yet.this.shutdownHook = new Thread() {@Overridepublic void run() {doClose();}};Runtime.getRuntime().addShutdownHook(this.shutdownHook);}}

?

在doClose()方法中進行資源的回收與釋放。

總結

以上是生活随笔為你收集整理的spring boot实战(第二篇)事件监听的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: xxx.国产 | 亚洲图片激情小说 | a毛片 | 久久久久亚洲av无码麻豆 | 成人性生交视频免费观看 | 国产原创在线播放 | 国产精品91视频 | 99久久久无码国产精品性色戒 | 在线资源av | 欧美熟妇精品一区二区蜜桃视频 | 亚洲综合五月天婷婷丁香 | 91精品国产91久久久久久吃药 | 成人做爰免费视频免费看 | 亚洲精品电影在线观看 | 成人深夜电影 | 狠狠干2021 | 自拍21区 | 欧美乱人伦 | 九九综合九九 | 超碰牛牛 | 韩国三级hd中文字幕叫床浴室 | 亚洲免费中文字幕 | 亚洲成人a∨ | 亚洲av无码日韩精品影片 | 亚洲av永久无码精品三区在线 | 精品久久毛片 | 免费在线观看黄色av | 国产精品福利在线播放 | gav在线 | 96日本xxxxxⅹxxx70| 欧美日韩色片 | 日韩av一二区 | 亚洲不卡网 | 男女裸体无遮挡做爰 | 人人妻人人藻人人爽欧美一区 | 亚洲日本护士毛茸茸 | 日本捏奶吃奶的视频 | 毛茸茸亚洲孕妇孕交片 | 国产免费av网站 | av高清在线观看 | 男女激情网 | 精品少妇 | 99热这里有 | 黄色在线视频网站 | 一区二区三区国产精品视频 | 青青草免费公开视频 | 免费久草视频 | 少妇按摩一区二区三区 | 激情综合影院 | 久久精品一区二区三区黑人印度 | 国产精品suv一区二区88 | 亚洲av无码一区二区三区人 | 亚洲精品资源 | 97在线播放 | 中文字幕资源网 | 午夜激情网站 | 国产裸体永久免费无遮挡 | 性高湖久久久久久久久aaaaa | 超碰97人人草 | 日韩在线不卡一区 | 色呦呦网站| 亚洲精品偷拍 | 二区在线播放 | av午夜在线观看 | 亚洲爱v| 少妇精品亚洲一区二区成人 | 国产欧美日韩在线播放 | 男女视频国产 | 波多野结衣中文字幕一区二区三区 | 成人国产视频在线观看 | 无码aⅴ精品一区二区三区浪潮 | 在线国产视频一区 | 在线视频 中文字幕 | 婷婷丁香综合 | 久草www| 国产高清黄色 | 精品亚洲天堂 | 无码人妻精品一区二区三区夜夜嗨 | 肥臀熟女一区二区三区 | 色综合久久久久久久 | 日韩激情视频 | 亚洲1区| 国产伦理一区二区三区 | 综合激情五月婷婷 | 中文字幕人妻一区二区三区 | 国产九九热视频 | av一起看香蕉 | 影音av在线 | 日批视频免费看 | 亚洲国产精品久久久久爰色欲 | 国产高清在线精品 | 欧美大尺度做爰啪啪床戏明星 | 牛人盗摄一区二区三区视频 | a天堂中文在线 | 天天爽av | 午夜男人av| 欧美日韩在线观看一区二区三区 | 人妻互换 综合 | 蜜桃91麻豆精品一二三区 |