一 Spring Event 事件生產和消費

2021-09-18 01:42:29 字數 1885 閱讀 9354

(補充)更優雅的寫法

思考:訂閱者模式在spring中的使用

@functionalinte***ce

}

private static final long serialversionuid = 7099057708183571937l;

private final long timestamp;

super(source);

this.timestamp = system.currenttimemillis();

} public final long gettimestamp() }

檢視呼叫的父類方法為:

public eventobject(object source)
可以看到會記錄在event物件的source屬性中,而定義為:

protected transient object  source;
其中transient表示屬性不需要關鍵字

需求:中介軟體處理原始請求時,無法直接同步返回結果(第三方沒有相關業務api提供呼叫), 這時候需要先返回乙個同步結果,再進行非同步操作.

可以開乙個執行緒來做,也可以用spring框架中的生產訂閱模式.

設計:三個類:

1.事件 :

event.class

2.生產者

publisher.class

3.監聽者(消費者,訂閱者)

listenera.class

listenerb.class

…流程: 定義乙個事件,生產者將它上線,觸發消費者的消費操作

**:定義一些類

data class message(

val id: string?

)@service

fun publish(event: event)

}@service

val message = event.source as message

println("a get $message")

}}@service

val message = event.source as message

println("b get $message")

}}@service

val message = event.source as message

println("c get $message")

}}

主程式
@autowired

lateinit var publisher: publisher

@test

fun eventtest()

控制台輸出
a get message(id=01)

b get message(id=01)

c get message(id=01)

完美!

(補充)更優雅的寫法

class mytest

}data class message(

val id: string?

)class event(val message: message)

@service

fun publish(event: event)

}@service

class listenera

@async

@eventlistener

val message = event.message

println("b get $message")

}}

注意: 監聽者需要註冊成 service, 這樣才能被spring 識別起來.

AS3生成單獨「雙擊事件」

as3雖然提供了雙擊事件,但在觸發雙擊事件之前會觸發乙個單擊事件,這給編寫遊戲的朋友帶來了很多不便,於是還是自己再加入寫判斷來生成單一的事件,也就是有雙擊事件的時候就沒有單擊事件,有單擊事件的時候就沒有雙擊事件。如下 mc.doubleclickenabled true mc.addeventlis...

詩詞(一) 君生我未生,我生君已老

君生我未生,我生君已老 君恨我生遲,我恨君生早 君生我未生,我生君已老 恨不生同時,日日與君好 我生君未生,君生我已老 我離君天涯,君隔我海角 我生君未生,君生我已老 化蝶去尋花,夜夜棲芳草 此詩為唐代銅官窯瓷器題詩,作者可能是陶工自己創作或當時流行的里巷歌謠。1974 1978年間出土於湖南長沙銅...

一生的朋友

邵dd 和我的對話 雖然他人比我小,可做人做事的態度絕對值得我學習 望他一切皆好 我需要審視我人生做人做事的態度了 不能懶惰 不能消極 做事前要考慮下事情的目的 意義 方法 權衡下值不值得做 邵dd says 17 29 好好看書呀,自己的東西要全部明白,不然你的 就白做了 凌零0 says 17 ...