中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

網站建設基地百度推廣員工工資怎么樣

網站建設基地,百度推廣員工工資怎么樣,app開發(fā)制作的措施,網站設計好 如何將本地網站發(fā)布Spring Event學習 觀察者模式是一種行為設計模式,它定義了對象之間的依賴關系,當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都會得到通知并被自動更新。在這個模式中,改變狀態(tài)的對象被稱為主題,依賴的對象被稱為觀…

Spring Event學習

觀察者模式是一種行為設計模式,它定義了對象之間的依賴關系,當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都會得到通知并被自動更新。在這個模式中,改變狀態(tài)的對象被稱為主題,依賴的對象被稱為觀察者。

為什么要使用Spring Event

1、業(yè)務解耦:比如給注冊成功的用戶發(fā)送短信通知,正常情況下我們可能會在service中去寫這個發(fā)送短信通知的代碼,但是如果用戶注冊有多個場景,每個場景都去調一次發(fā)送短信通知的代碼略顯繁雜,而且注冊業(yè)務和發(fā)送短信通知的業(yè)務耦合了;這時就可以使用Spring Event進行處理,在注冊成功后發(fā)布一個用戶注冊成功的事件,然后在監(jiān)聽器中去統一發(fā)送短信通知;
2、底層模塊給上層模塊發(fā)送通知:如果項目本身依賴了自己開發(fā)的其它模塊,那么業(yè)務模塊如何拿到底層模塊的信息呢?這時也可以使用Spring Event進行處理。

Spring Event使用

非注解

創(chuàng)建事件對象。這里要注意的是從Spring Framework4.2開始,ApplicationEventPublisher接口為 publishEvent(Object event)方法提供了新的重載,該方法接受任何對象作為事件。因此,Spring 事件不再需要擴展ApplicationEvent 類。

public class MyEvent extends ApplicationEvent {private String message;public MyEvent(Object source) {super(source);}public MyEvent(Object source, String message) {super(source);this.message = message;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}
}

事件發(fā)布者,發(fā)布事件需要調用Spring提供的ApplicationEventPublisher的publishEvent方法。

@Component
public class MyEventPublisher {@Autowiredprivate ApplicationEventPublisher eventPublisher;public void publishMyEvent(String message) {System.out.println("message: " + message);MyEvent myEvent = new MyEvent(this, "test meaage");//發(fā)布事件,發(fā)布給在監(jiān)聽的任何人eventPublisher.publishEvent(myEvent);}
}

事件監(jiān)聽。事件監(jiān)聽可以通過實現ApplicationListener來實現。

@Component
public class MyEventListener implements ApplicationListener<MyEvent> {@Overridepublic void onApplicationEvent(MyEvent event) {System.out.println("recieve message: " + event.getMessage());}
}

在業(yè)務中發(fā)布事件,這里寫了一個controller,當訪問這個接口時會發(fā)送事件,事件監(jiān)聽者會收到事件通知。

@RestController
@RequestMapping("/test")
public class MyController {@Autowiredprivate MyEventPublisher eventPublisher;@RequestMapping("/test1")public String test1() {eventPublisher.publishMyEvent("test1");return "test1";}
}

注解

從 Spring4.2開始,事件偵聽器可以不實現ApplicationListener接口,使用@EventListener注解即可。

使用注解的事件監(jiān)聽者示例如下:

@Component
public class AnnotationDrivenEventListener {@EventListenerpublic void handleContextStart(ContextStartedEvent cse) {System.out.println("Handling context started event.");}
}

默認情況下監(jiān)聽器是同步的,可以通過在方法上使用@Async注解來開啟異步。

Spring 框架提供的事件

ContextRefreshed事件

在初始化或刷新ApplicationContext時,Spring 會引發(fā) ContextRefreshedEvent。通常,只要上下文尚未關閉,刷新就會被多次觸發(fā)。另外還可以調用ConfigurableApplicationContext接口的refresh方法來手動觸發(fā)事件。

ContextStarted事件

通過在 ConfigurableApplicationContext 上調用start方法,我們觸發(fā)此事件并啟ApplicationContext。事實上,該方法通常用于在顯式停止后重新啟動 bean。我們還可以使用該方法來處理沒有自動啟動配置的組件。在這里,需要注意的是,對 start的調用始終是顯式的,而不是refresh。

ContextStopped事件

當 ApplicationContext 停止時,通過調用 ConfigurableApplicationContext上的stop方法,將發(fā)布 ContextStoppedEvent。我們可以使用 start方法重新啟動停止的事件。

ContextClosed事件

此事件在 ApplicationContext 關閉時使用 ConfigurableApplicationContext 中的 close方法發(fā)布。
實際上,在關閉上下文后,我們無法重新啟動它。上下文在關閉它時會達到其生命周期的終點。

示例代碼

監(jiān)聽指定的事件

@EventListener
public void handleContextRefreshEvent(ContextStartedEvent ctxStartEvt) {System.out.println("Context Start Event received.");
}

同時監(jiān)聽多個事件

@Component
public class MyContextStartListener {@EventListener(classes = {ContextStartedEvent.class, ContextClosedEvent.class,ContextStoppedEvent.class, ContextRefreshedEvent.class})public void handleContextStart(ApplicationContextEvent event) {System.out.println("Handling context started event.");}}

參考

  1. Spring高手之路7——事件機制與監(jiān)聽器的全面探索
  2. Spring Events
  3. Spring Application Context Events
http://m.risenshineclean.com/news/62875.html

相關文章:

  • 蕪湖做的好的招聘網站百度seo在哪里
  • 響應式網站制作軟件網上怎么推廣產品
  • 自己做的網站放到首頁深圳市推廣網站的公司
  • 中學生制作網站怎么做seo外鏈資源
  • 昆明seo搜索引擎優(yōu)化的簡稱是
  • 四川企業(yè)品牌網站建設愛站工具下載
  • 英文網站建設官網優(yōu)化搜索引擎的方法
  • 做色情網站需要多少錢企業(yè)網站建設案例
  • 成交型網站建設app營銷策略
  • 電子商務網站的作用有哪些泰安網站優(yōu)化公司
  • 網站中插入視頻代碼佛山疫情最新消息
  • 做b2b專業(yè)網站一般有效果嗎怎么給客戶推廣自己的產品
  • 深圳快速網站制作如何利用互聯網宣傳與推廣
  • 無錫做網站選優(yōu)易信定制網站建設電話
  • 網站建設與管理讀書心得推廣品牌的方法
  • 注冊網站域名需要什么資料醫(yī)療器械排名優(yōu)化seo
  • 制作網站 優(yōu)幫云網絡營銷專業(yè)學什么
  • 滄浪網站建設方案今日軍事新聞最新消息新聞報道
  • 江西建設銀行招聘網站加強服務保障滿足群眾急需i
  • 鄭州制作網站公司寧波網站關鍵詞優(yōu)化排名
  • 做視頻后期的網站推廣app接單網
  • wordpress手機編輯器插件下載seo專業(yè)培訓班
  • 青島模板自助建站李勇seo的博客
  • 上海做網站建設的公司南京seo排名優(yōu)化
  • 公司網站首頁大圖怎么做深圳專業(yè)seo
  • wordpress與phpstudy安裝優(yōu)化關鍵詞有哪些方法
  • 中國建設銀行官方網站e路航下載網站查詢是否安全
  • 加盟裝修公司怎么合作谷歌推廣seo
  • 做網站有發(fā)票嗎站長工具whois查詢
  • 網站開發(fā)初學網絡推廣的重要性與好處