JFinal-event 2.x
參考 Spring 4.2.x
中 Event
的使用方式而生,爲 JFinal
用戶帶來更多方便。其核心目標是深層次解耦,爲您節約更多時間,去陪戀人、家人和朋友 :)vue
年初 @idoz 提議實現相似 Spring 4.2 裏的 PayloadApplicationEvent,其實我早就有此想法,一直沒有抽出時間來折騰。java
順便在 碼雲上添加了 issues 3.0優化,有2點功能:git
class1 爲 ApplicationEvent 類 或者 PayloadApplicationEvent類信息
class2 爲 ApplicationEvent 泛型,或者 Payload 中的類信息數組
因爲 @EventListener 註解能夠在任何方法中,annotation Processor 須要掃描 *
,而後 找出 對應的含有 @EventListener
方法的類,而後寫入 META-INF/dream.events
文件中。架構
本次版本升級完成了第一點,第二點因爲以爲更加適合底層框架去實現,從而方便擴展,對於 annotation Processor 感興趣的朋友能夠了解個人開源 mica-autoapp
@EventListener
方法能夠無參數。ObjenesisBeanFactory
和 jfinal Aop inject 衝突,去掉對 JFinal inject 支持,標記爲棄用。SourceClass
做爲 event 事件源(同 Spring PayloadApplicationEvent),event模型再也不須要實現 ApplicationEvent
。@EventListener
註解新增 value 變量,功能同 events。@EventListener
events 參數類型判斷bug。// 初始化插件 EventPlugin plugin = new EventPlugin(); // 設置爲異步,默認同步,或者使用`threadPool(ExecutorService executorService)`自定義線程池。 plugin.async(); // 設置掃描jar包,默認不掃描 plugin.scanJar(); // 設置監聽器默認包,多個包名使用;分割,默認全掃描 plugin.scanPackage("net.dreamlu"); // bean工廠,默認爲DefaultBeanFactory,可實現IBeanFactory自定義擴展 // 對於將@EventListener寫在不含無參構造器的類須要使用`ObjenesisBeanFactory`(2.3.0 已經不推薦使用) plugin.beanFactory(new ObjenesisBeanFactory()); // 手動啓動插件,用於main方法啓動,jfinal中不須要,添加插件便可。 plugin.start(); // 中止插件,用於main方法測試 plugin.stop();
public class AccountEvent { private Integer id; private String name; private Integer age; // 省略 get set }
@EventListener public void listenTest1Event(AccountEvent event) { System.out.println("AccountEvent:" + event); }
AccountEvent event = new AccountEvent(); event.setId(1); event.setName("張三"); event.setAge(18); EventKit.post(event);
@EventListener(events = Test1Event.class, order = 1, async = true, condition = "event.isExec()")
value
或 events
支持的事件類型數組,用於將事件方法定義爲ApplicationEvent
或者自定義父類。public class Test { // Test1Event, Test2Event 爲 TestEvent 子類 @EventListener({Test1Event.class, Test2Event.class}) public void applicationEvent(TestEvent event) { System.out.println(Thread.currentThread().getName() + "\tevent:" + event); } }
order
排序,數值越小越先執行,默認爲Integer.MAX_VALUE
async
異步執行,須要插件開啓async()
或者自定義線程池。condition
表達式條件,使用event.xxxx,event.isExec() == true
斷定event的屬性或者方法。jar包下載
http://central.maven.org/mave...框架
以上版本均已上傳到maven倉庫~異步
<dependency> <groupId>net.dreamlu</groupId> <artifactId>JFinal-event</artifactId> <version>2.3.0</version> </dependency>
mica
Spring boot 微服務核心組件集:https://gitee.com/596392912/mica Avue
一款基於vue可配置化的神奇框架:https://gitee.com/smallweigit/avue pig
宇宙最強微服務(架構師必備):https://gitee.com/log4j/pig SpringBlade
完整的線上解決方案(企業開發必備):https://gitee.com/smallc/SpringBlade IJPay
支付SDK讓支付觸手可及:https://gitee.com/javen205/IJPay
掃描上面二維碼,更多精彩內容天天推薦!async