Spring中觀察者模式的應用

2021-10-05 03:05:28 字數 1662 閱讀 6590

@service

public

class

myservice

}

/**

* 自定義事件

*/public

class

myevent

extends

}

/**

* 自定義***(觀察者)

*/@component

public

class

mylistener

}

@configuration

@componentscan

@enableasync

public

class

myconfig

; threadpooltaskexecutor executor =

newthreadpooltaskexecutor()

;// 執行緒池維護執行緒的最少數量

executor.

setcorepoolsize(5

);// 執行緒池維護執行緒的最大數量

executor.

setmaxpoolsize(10

);// 快取佇列

executor.

setqueuecapacity(25

);//執行緒名

executor.

setthreadfactory

(namedthreadfactory)

;// 執行緒池初始化

executor.

initialize()

;return executor;

}}

在***方法上新增@async註解,指定自己定義的executor

/**

* 自定義***(觀察者)

*/@component

public

class

mylistener

}

2. 通過@transactionaleventlistener監聽事務提交

可用在事務結束後需要傳送mq的場景,防止事務在生產者傳送訊息後才提交造成的問題

在service的需要事務控制的方法最後傳送自定義事件

@service

public

class

myservice

}

定義***

原理:publisher傳送事件的方法會通過傳入的事件引數查詢與之對應的***物件,將其註冊到乙個容器中,當執行完事務提交操作後,會遍歷容器中的***,執行相應的處理方法。

@component

public

class

transactioneventlistener

}

觀察者模式的好處

1.被觀察者不需要知道觀察者是誰,也不知道有多少觀察者

2.增加或減少觀察者,都不會影響被觀察者的邏輯

設計模式之Spring中觀察者模式

定義物件之間存在一對多或者一對一依賴,當乙個物件改變狀態,依賴它的物件會收到通知並自動更新。mq其實就屬於一種觀察者模式,發布者發布資訊,訂閱者獲取資訊,訂閱了就能收到資訊,沒訂閱就收不到資訊。優點1.觀察者和被觀察者是抽象耦合的。2.建立一套觸發機制。缺點1 如果乙個被觀察者物件有很多的直接和間接...

C 中觀察者模式的實現 事件

參考c 中的事件是一種典型的觀察者模式 在winform程式中,可訂閱按鈕等控制項引發的事件。事件具有以下屬性 來自microsoftdoc 以下是參照張陽 三種觀察者模式的c 實現的示例 鬧鐘相關方法 private void turnonthealarm datetime?alarmtime v...

觀察者模式的應用

在層與層之間如果存在著直接的相互依賴的關係,那麼可以利用觀察者模式將直接的依賴關係轉化成間接的依賴關係,並且用這種模式降低層與層之間的偶合度.class fg o sgobserver 註冊為作業系統的接收者的物件通過該介面來接收系統訊息 virtual void o essage fg messa...