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