日韩性视频-久久久蜜桃-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实战(第二篇)事件监听的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 黄色草逼视频 | 欧美人一级淫片a免费播放 西方av在线 | 91久久精品一区二区三区 | 成人免费一区二区三区在线观看 | 国产精品乱码久久久久 | 蜜臀久久精品久久久久久酒店 | 美国一区二区 | 国产精品入口a级 | 色噜噜一区二区 | 国产又黄又爽 | 一区二区不卡免费视频 | 18黄暴禁片在线观看 | 欧美日韩亚洲一区二区 | 国产成人精品亚洲线观看 | 欧洲精品免费一区二区三区 | bt男人天堂 | 久久调教视频 | 欧洲自拍一区 | 精品少妇无码av无码专区 | 国产欧美激情视频 | 97神马影院 | 色av性av丰满av | h片大全 | 日韩二级 | 亚洲一级电影 | 怡红院男人的天堂 | 色多多视频网站 | 91午夜影院| 麻豆影视av | 美女久久久久久久久久 | 动漫一区二区 | 精品久久久免费 | 精品国产鲁一鲁一区二区张丽 | 国产精品久久久久久亚洲av | 少妇一级淫片免费放2 | 米奇影音 | 在线观看免费国产 | 国产亚洲精品久久 | 国产精品自拍视频一区 | porn国产| 91在线观看免费高清 | 中文精品久久 | 精品黑人一区二区三区久久 | 国产真实老熟女无套内射 | 天天操婷婷 | jzzijzzij亚洲成熟少妇 | 2022av在线| 精品国产一区二区三区在线观看 | 在线涩涩 | 制服丝袜亚洲 | 天堂中文在线最新 | 啪啪官网| 在线观看视频一区二区三区 | xxxx日本少妇 | 九九精品网| 天天摸天天爽 | 国产最新地址 | 91免费视频观看 | 19禁大尺度做爰无遮挡电影 | av黄色片| 高清乱码毛片入口 | 亚洲男女在线 | 日韩一区在线看 | 亚洲一区二区动漫 | 大地资源影视在线播放观看高清视频 | 日本在线不卡一区二区 | 欧美不卡高清 | 韩日产理伦片在线观看 | 国产熟妇搡bbbb搡bbbb搡 | 精品国自产在线观看 | 精品熟妇视频一区二区三区 | 国产12页 | 日韩久久成人 | 免费欧美大片 | 91精品国产电影 | 变态另类丨国产精品 | 怡春院在线视频 | 天堂草在线观看 | 国产伦精品一区二区三区 | 999久久久精品 | 国产a三级 | 真性中出 | 在线国产三级 | 91在线公开视频 | 久综合网 | 欧美人与性动交a欧美精品 日韩免费高清视频 | 久久亚洲精 | 草青青视频 | 欧美色啪| 久久婷婷国产麻豆91天堂 | 特黄色大片 | 欧美日韩亚洲在线 | 在线看片成人 | 久久人人爽人人爽人人片av免费 | 日韩激情小说 | 日韩在线导航 | 国产精品久久久久久久久久久久久久久久久久 | 午夜性视频| 国产精品99久久免费黑人人妻 |