JFinal 事件驱动插件 JFinal-event
借鉴 Spring 的事件驱动模型,为 JFinal 打造轻量事件插件 JFinal-event,支持同步/异步、tag 分组、IOC 与 RMI 远程事件。
简介
模仿的Spring中的消息事件:详解Spring事件驱动模
源码连接:http://git.oschina.net/596392912/JFinal-event
手册WIKI地址:http://git.oschina.net/596392912/JFinal-event/wikis/home
使用
代码简单无任何第三方依赖,具体使用如下:
// 初始化插件
EventPlugin plugin = new EventPlugin();
// 开启异步,默认同步。或者使用`threadPool(ExecutorService executorService)`自定义线程池。
plugin.async();
// 设置扫描jar包,默认不扫描
plugin.scanJar();
// 设置监听器默认包,默认全扫描
plugin.scanPackage("net.dreamlu");
// 启动插件,用于main方法启动,jfinal中不需要,添加插件即可。
plugin.start();
// 发送第一个消息
EventKit.post(new Test1Event("hello1"));
// 发送带tag的消息
EventKit.post("save", new Test2Event(123123));
Thread.sleep(1000);
// 停止插件,用于main方法测试。
plugin.stop();注意:异步需要2个条件
// 1. 开启异步plugin.async();
// 2. @Listener(order = 1, enableAsync = true, tag="save")注解中,enableAsync = true开启异步。发送远程事件
// 服务端:
plugin.setRmiServer(int port);
//客户端:
plugin.setRmiClient(String host, int port);
//发送消息:
EventKit.postRemote(final ApplicationEvent event);
// 或者
EventKit.postRemote(final String tag, final ApplicationEvent event);
// 建议:将服务端和客户端通用的event类文件打成maven模块。jar包下载:
http://central.maven.org/maven2/net/dreamlu/JFinal-event/
<dependency>
<groupId>net.dreamlu</groupId>
<artifactId>JFinal-event</artifactId>
<version>1.5.1</version>
</dependency>更新说明:
2018-10-09 v2.2.2
升级到jfinal 3.5 (不兼容老版本)支持新版本inject,升级到java 8优化部分代码。 DefaultBeanFactory改为jfinal 3.5 aop 创建,删除 DuangBeanFactory。 优化 ObjenesisBeanFactory 支持jfinal 3.5 inject
2018-08-14 v2.2.1
ApplicationEvent 添加泛型,方便类型转换。
2018-04-15 v2.2.0
插件添加手动注册监听类
plugin.register(Class<?> clazz), 多个类,多次调用register方法即可。
2018-03-02 v2.1.0
添加
CtrlHolderEvent处理同步、异步中request、session、attr、header参数传递。 使用: 需先在Config中添加me.add(new CtrlHolderInterceptor());拦截器。 然后继承CtrlHolderEvent编写自己的事件类
CtrlHolder holder = event.getCtrlHolder();
holder.getPara("p");
holder.getAttr("x");
holder.getHeader("x");
holder.getSessionAttr("x");2017-11-29 v2.0.4
添加
ObjenesisBeanFactory处理不含有默认构造器的Bean 依赖objenesisjar包,下载地址:http://mvnrepository.com/artifact/org.objenesis/objenesis/2.6
2017-10-11 v2.0.3
用户反馈的问题 #IFX3Z 支持多包名,用
;分割,如:net.dreamlu.a;net.dreamlu.b。 插件初始化时,没有扫描到监听时依然初始化成功。
2017-10-11 v2.0.2
2.x bug修复版
2017-10-11 v2.0.1
插件添加Bean工厂,方便IOC容器和自定义扩展。 默认为
DefaultBeanFactory,可实现IBeanFactory自定义扩展。plugin.beanFactory(new DuangBeanFactory());
2017-10-10 v2.0.0
基于注解和方法的兼听,简化使用,不兼容1.x 支持JFinal 3.1和3.1以上版本
2017-04-28
v1.5.1基于rmi的远程Event
2017-03-22
v1.4.2
更改默认线程池为SingleThreadExecutor,使异步执行有序化。
添加EventThreadFactory,处理异步时的异常避免影响服务请求。
建议:如果event需要发送大量的异步事件,建议使用自定义线程池。
如:eventPlugin.threadPool(Executors.newCachedThreadPool(new EventThreadFactory()));
2017-02-15
v1.4.1添加自定义线程池EventPlugin.threadPool(ExecutorService executorService)方法
2016-08-19
v1.4.0升级到JFinal2.2,JFinal低版本用户请使用v1.2.0。
EventKit.postEvent(event)更改为EventKit.post(event),postEvent不再建议使用。
添加EventKit.post(tag, event)方法,@Listener(order = 2, tag = "save")添加tag
开源推荐
- Spring boot 微服务高效开发
mica工具集:https://gitee.com/596392912/mica Avue一款基于vue可配置化的神奇框架:https://gitee.com/smallweigit/avuepig宇宙最强微服务(架构师必备):https://gitee.com/log4j/pigSpringBlade完整的线上解决方案(企业开发必备):https://gitee.com/smallc/SpringBladeIJPay支付SDK让支付触手可及:https://gitee.com/javen205/IJPay- 加入【如梦技术】Spring QQ群:479710041,了解更多。
微信公众号

精彩内容每日推荐!!!