JFinal-event 3.1.3 修复增量编译下注解处理器 bug

一、前言

mica-auto 2.1.3 中笔者修复了 mica-auto 在编辑器中增量编译的问题,本周抽出时间对 JFinal-event 也做了一番调整,修复了增量编译和对一些依赖进行了升级。

二、更新记录

2021-09-02 v3.1.3

  • 代码优化。

  • 🐛 修复异常抛出。

  • 🐛 修复注解处理器增量编译问题。

  • ⬆️ 依赖升级。

三、更新说明

此次更新主要对 3.0.0 新增的采用 Annotation Processor 技术,将运行期的事件类扫描改到了编译期。其中的增量编译进行了修复,从此可以不再使用类扫描,加快服务的启动时间,减少各种容器差异导致的类扫描问题。

四、使用

4.1 maven

<dependency>
   <groupId>net.dreamlu</groupId>
   <artifactId>JFinal-event</artifactId>
   <version>3.1.3</version>
</dependency>

4.2 gradle >= 5.x


api("net.dreamlu:JFinal-event:3.1.3")
annotationProcessor("net.dreamlu:JFinal-event:3.1.3")

4.3 gradle < 5.x


compile("net.dreamlu:JFinal-event:3.1.3")

4.4 启动插件

// 初始化插件
EventPlugin plugin = new EventPlugin();
// 设置为异步,默认同步,或者使用`threadPool(ExecutorService executorService)`自定义线程池。
plugin.async();

// 手动启动插件,用于 main 方法启动,jfinal中不需要,添加插件即可。
plugin.start();

// 停止插件,用于 main 方法测试,jfinal中不需要,添加插件即可。
plugin.stop();

4.5 新建事件类


public class AccountEvent {

private Integer id;
private String name;
private Integer age;

// 省略 get set
}

4.6 编写监听


public class Test1Listener {

@EventListener
public void listenTest1Event(AccountEvent event) {
 System.out.println("AccountEvent:" + event);
}

}

4.7 发送事件


AccountEvent event = new AccountEvent();
event.setId(1);
event.setName("张三");
event.setAge(18);

EventKit.post(event);

4.8 Idea 跳转插件

如梦技术

Idea 插件 JFinal-eventx下载

五、回顾

或许这次真的是最后的一个版本了,由于精力有限,笔者已经停止更新其它的几个 JFinal 插件,下面随我一起回顾下 JFinal-event 的这6年多。

  • 2015-04-27 初始化项目 网名(孤独的√3)

  • 2015-05-06 v0.1 版本发布推送到 maven 中央库

  • 2015-06-25 v0.3 支持异步,去掉了 guava 包,因为只用了一个 Multimap 集合。

  • 2015-07-04 v0.4.2 添加事件排序

  • 2016-08-19 v1.4.0 添加事件 tag

  • 2017-04-22 v1.5.1 添加了基于 rmi 的远程 Event(2.x弃用)

  • 2017-10-10 v2.0.0 基于注解和方法的兼听,不再需要单独编写 Listener 类。

  • 2018-03-02 v2.1.0 添加 `CtrlHolderEvent 处理同步、异步中 request、session、header 等参数传递。网名(如梦技术)

  • 2018-10-09 v2.2.2 升级到 jfinal 3.5 支持JFinal新版本的 bean inject。

  • 2019-04-08 v2.3.0 支持普通类作为 event 事件源,不再需要继承 ApplicationEvent

  • 2019-07-19 v3.0.0 采用注解处理器将类扫描提到编译期提升十倍的启动速度。

  • 2020-03-29 v3.1.2 新增 Idea 快速跳转插件。

感谢码云提供了这么好的一个平台作为码云提供了这么一个优秀的平台,也感谢 JFinal 从 JFinal 中学习到了不少极简设计。

六、最后

笔者近几年将更多的精力放到的我新的 mica 系列开源项目中,详见 gitee,其中包括 mica-auto(Spring boot stater 利器)、mica(Spring cloud 微服务组件集)、mica-mqtt(基于 t-io 的物联网 mqtt 客户端和服务端)等,欢迎 star。

评论区

cpenet

2021-09-04 20:21

这个干嘛用的?

Dreamlu

2021-09-07 17:05

@cpenet 事件驱动,例如要在订单成功之后,发短信,发邮件,发微信,就可以采用多个监听器来解耦业务