JFinal事件驱动插件JFinal-event

简介

模仿的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

开源推荐

微信公众号

如梦技术

精彩内容每日推荐!!!