JFinal-event 3.1.1 發布,添加類掃描的開關

←手機掃碼閱讀     admin @ 2020-01-15 , reply:0

一、說明

在 JFinal-event 3.0 比較激進的採用了註解處理器,在不使用 maven、gradle 等包管理或者開發工具不支持,

會導致不生成 dream.events 配置文件。對於這種情況你可以採用開啟類掃描的形式。


EventPlugin plugin = new EventPlugin();
// 設置為非同步,默認同步,或者使用`threadPool(ExecutorService executorService)`自定義線程池。
plugin.async(); 
// 開啟類掃描,默認為 false,用於不支持註解處理器的情況,用於不使用 maven 或者不支持註解處理器的情況。
plugin.enableClassScan();
// 掃描 jar 里的 監聽器,默認不掃描,在開啟 enableClassScan 有效果
plugin.scanJar();
// 掃描的包,默認全掃描,可提升啟動速度,在開啟 enableClassScan 有效果
plugin.scanPackage("com.xxx.包名"); 
// 手動啟動插件,用於main方法啟動,jfinal中不需要,添加插件即可。
plugin.start(); 
// 停止插件,用於main方法測試
plugin.stop();

如果你是使用的 maven ,我還是推薦你不用類掃描的方式,註解處理器可以提速項目啟動的時間。

或者你可以根據 JFinal.me().getConstants().getDevMode(),判斷是否開啟類掃描,因為註解處理器 maven 是支持的。

本地 ide 支持情況各不同,idea 中需要配置開啟註解處理器。

詳細使用說明請見:https://gitee.com/596392912/JFinal-event

二、使用場景

JFinal event 適用於單服務內部的事件匯流排,當然也可以結合 mq 來使用,jfinal-event 曾經也開發過基於 rmi 的遠程事件版本。後期放棄了,畢竟使用 mq 會更有優勢。

場景列舉:

1. 自定義 jfinal base model,cud 時發送 cud 事件,解耦代碼,任何地方都可以監聽 event。

2. 業務解耦,例如:下單完成時的功能:

a. 用戶積分

b. 簡訊消息

c. 郵件消息

d. 公眾號消息等

e. 非同步日誌

3. websocket中使用,將消息和業務解耦。

這時候我們可以在 支付完成後的業務代碼添加一個事件發送。

然後就可以將上面的幾個功能寫到不同的監聽器里,(一個事件是可以有多個監聽的)

事件無處不在,html 元素里都是事件監聽,如果真想清楚了一通百通。

三、開啟註解處理器

eclipse:

idea:

四、更新說明

2020-01-10 v3.1.1

  • 升級到jfinal 4.8。
  • 支持老的 plugin.scanJar();
  • 支持老的 plugin.scanPackage("com.xxx.包名");
  • google-auto 調整為自家的 mica-auto。
  • 添加類掃描的開關,用於不是用 maven 等包管理的項目。
  • 刪除 ObjenesisBeanFactory,已經沒有存在的意義。

五、JFinal-event idea 插件眾籌

使用 JFinal-event 可以解耦複雜的業務邏輯,也給新手帶來不少疑惑,找不到具體的監聽邏輯。

Idea 為 Spring 開發了一個可以在 event 和 Listener 跳轉的插件,如下圖:

眾籌詳情請見:http://www.jfinal.com/share/1973





[admin ]

來源:OsChina
連結:https://www.oschina.net/news/112793/jfinal-event-3-1-1-released
JFinal-event 3.1.1 發布,添加類掃描的開關已經有25次圍觀

http://coctec.com/news/all/show-post-222956.html