摘要:和沖突,去掉對(duì)支持,標(biāo)記為棄用。初始化插件初始化插件設(shè)置為異步,默認(rèn)同步,或者使用自定義線程池。為子類排序,數(shù)值越小越先執(zhí)行,默認(rèn)為異步執(zhí)行,需要插件開(kāi)啟或者自定義線程池。
說(shuō)明
JFinal-event 2.x 參考 Spring 4.2.x 中 Event 的使用方式而生,為 JFinal 用戶帶來(lái)更多方便。其核心目標(biāo)是深層次解耦,為您節(jié)約更多時(shí)間,去陪戀人、家人和朋友 :)
年初 @idoz 提議實(shí)現(xiàn)類似 Spring 4.2 里的 PayloadApplicationEvent,其實(shí)我早就有此想法,一直沒(méi)有抽出時(shí)間來(lái)折騰。
順便在 碼云上添加了 issues 3.0優(yōu)化,有2點(diǎn)功能:
第一點(diǎn),實(shí)現(xiàn) PayloadApplicationEvent 不難。擴(kuò)展個(gè) EventTypeclass1 為 ApplicationEvent 類 或者 PayloadApplicationEvent類信息
class2 為 ApplicationEvent 泛型,或者 Payload 中的類信息
由于 @EventListener 注解可以在任何方法中,annotation Processor 需要掃描 *,然后 找出 對(duì)應(yīng)的含有 @EventListener 方法的類,然后寫(xiě)入 META-INF/dream.events 文件中。
本次版本升級(jí)完成了第一點(diǎn),第二點(diǎn)由于覺(jué)得更加適合底層框架去實(shí)現(xiàn),從而方便擴(kuò)展,對(duì)于 annotation Processor 感興趣的朋友可以了解我的開(kāi)源 mica-auto
更新說(shuō)明 2019-04-08 v2.3.0升級(jí)到 jfinal 3.8。
支持 @EventListener 方法可以無(wú)參數(shù)。
ObjenesisBeanFactory 和 jfinal Aop inject 沖突,去掉對(duì) JFinal inject 支持,標(biāo)記為棄用。
新增 SourceClass 作為 event 事件源(同 Spring PayloadApplicationEvent),event模型不再需要實(shí)現(xiàn) ApplicationEvent。
@EventListener 注解新增 value 變量,功能同 events。
修復(fù) @EventListener events 參數(shù)類型判斷bug。
初始化插件// 初始化插件 EventPlugin plugin = new EventPlugin(); // 設(shè)置為異步,默認(rèn)同步,或者使用`threadPool(ExecutorService executorService)`自定義線程池。 plugin.async(); // 設(shè)置掃描jar包,默認(rèn)不掃描 plugin.scanJar(); // 設(shè)置監(jiān)聽(tīng)器默認(rèn)包,多個(gè)包名使用;分割,默認(rèn)全掃描 plugin.scanPackage("net.dreamlu"); // bean工廠,默認(rèn)為DefaultBeanFactory,可實(shí)現(xiàn)IBeanFactory自定義擴(kuò)展 // 對(duì)于將@EventListener寫(xiě)在不含無(wú)參構(gòu)造器的類需要使用`ObjenesisBeanFactory`(2.3.0 已經(jīng)不推薦使用) plugin.beanFactory(new ObjenesisBeanFactory()); // 手動(dòng)啟動(dòng)插件,用于main方法啟動(dòng),jfinal中不需要,添加插件即可。 plugin.start(); // 停止插件,用于main方法測(cè)試 plugin.stop();新建事件類(任意模型即可 2.3.0支持)
public class AccountEvent { private Integer id; private String name; private Integer age; // 省略 get set }編寫(xiě)監(jiān)聽(tīng)
@EventListener public void listenTest1Event(AccountEvent event) { System.out.println("AccountEvent:" + event); }發(fā)送事件
AccountEvent event = new AccountEvent(); event.setId(1); event.setName("張三"); event.setAge(18); EventKit.post(event);@EventListener注解說(shuō)明 示例
@EventListener(events = Test1Event.class, order = 1, async = true, condition = "event.isExec()")說(shuō)明
value 或 events支持的事件類型數(shù)組,用于將事件方法定義為ApplicationEvent或者自定義父類。
public class Test { // Test1Event, Test2Event 為 TestEvent 子類 @EventListener({Test1Event.class, Test2Event.class}) public void applicationEvent(TestEvent event) { System.out.println(Thread.currentThread().getName() + " event:" + event); } }
order排序,數(shù)值越小越先執(zhí)行,默認(rèn)為Integer.MAX_VALUE
async異步執(zhí)行,需要插件開(kāi)啟async()或者自定義線程池。
condition表達(dá)式條件,使用event.xxxx,event.isExec() == true判定event的屬性或者方法。
jar依賴jar包下載
http://central.maven.org/mave...
以上版本均已上傳到maven倉(cāng)庫(kù)~
開(kāi)源推薦net.dreamlu JFinal-event 2.3.0
mica?Spring boot 微服務(wù)核心組件集:https://gitee.com/596392912/mica
Avue?一款基于vue可配置化的神奇框架:https://gitee.com/smallweigit/avue
pig?宇宙最強(qiáng)微服務(wù)(架構(gòu)師必備):https://gitee.com/log4j/pig
SpringBlade?完整的線上解決方案(企業(yè)開(kāi)發(fā)必備):https://gitee.com/smallc/SpringBlade
IJPay?支付SDK讓支付觸手可及:https://gitee.com/javen205/IJPay
關(guān)注我們掃描上面二維碼,更多精彩內(nèi)容每天推薦!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/77474.html
摘要:實(shí)例方法的話,最核心的就是分別是添加事件,刪除事件,發(fā)布事件。為了防止進(jìn)程崩潰,可以在對(duì)象的事件上注冊(cè)監(jiān)聽(tīng)器,或使用模塊。注意,模塊已被廢棄。作為最佳實(shí)踐,應(yīng)該始終為事件注冊(cè)監(jiān)聽(tīng)器。 前言 事件在js中非常的常見(jiàn),不管是瀏覽器還是node,這種事件發(fā)布/訂閱模式的應(yīng)用都是很常見(jiàn)的。至于發(fā)布/訂閱模式和觀察者模式是否是同一種設(shè)計(jì)模式說(shuō)法都有,這里不做具體的討論。在之前的項(xiàng)目中也曾自己實(shí)現(xiàn)...
摘要:同時(shí)會(huì)記錄你的配置,便于下一次選擇。自定義界面預(yù)覽圖未來(lái)自定義模板還會(huì)支持等框架的選擇,詳細(xì)介紹可查看。阿里云上傳插件可一鍵將構(gòu)建后的資源文件上傳到阿里云返回資源路徑,提高發(fā)布效率。 Iceworks 2.3.0 版本發(fā)布概覽 新增:自定義模板新增自定義布局功能 新增:構(gòu)建資源結(jié)果展示插件 新增:阿里云 OSS 上傳插件 查看詳情 新增:項(xiàng)目插件面板可拖拽排序 優(yōu)化:依賴管理插件,...
摘要:事件處理器是自包含和獨(dú)立的,解耦于架構(gòu)。因其分布式和異步的性質(zhì),事件驅(qū)動(dòng)架構(gòu)的實(shí)現(xiàn)相對(duì)復(fù)雜,主要是由于它的異步和分布式特性。微內(nèi)核架構(gòu)微內(nèi)核架構(gòu)模式也被稱為插件架構(gòu)模式。 來(lái)自于OReilly免費(fèi)的電子書(shū):Software Architecture Patterns showImg(https://segmentfault.com/img/remote/1460000009652123...
閱讀 3155·2021-11-23 10:02
閱讀 3126·2021-11-16 11:53
閱讀 3103·2021-09-23 11:21
閱讀 3378·2019-08-30 13:02
閱讀 1637·2019-08-29 16:18
閱讀 1568·2019-08-29 12:55
閱讀 1462·2019-08-26 12:24
閱讀 2094·2019-08-26 10:36