1 Star 0 Fork 135

goodhans/JFinal-event

forked from 如梦技术/JFinal-event 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT
模仿的Spring中的消息事件:[详解Spring事件驱动模型](http://jinnianshilongnian.iteye.com/blog/1902886) 专为JFinal设计,无任何第三方依赖,小巧玲珑。 :laughing: `JFinal-event` 插件,`老版本`使用请查看[文档 wiki](http://git.oschina.net/596392912/JFinal-event/wikis/home) :laughing: `如梦技术VIP` 限时¥99,[欢迎加入](https://www.dreamlu.net/spring-boot/spring-security/thymeleaf/maven/gradle/2018/04/14/dream-security.html) ## 初始化插件 ``` // 初始化插件 EventPlugin plugin = new EventPlugin(); // 设置为异步,默认同步,或者使用`threadPool(ExecutorService executorService)`自定义线程池。 plugin.async(); // 设置扫描jar包,默认不扫描 plugin.scanJar(); // 设置监听器默认包,多个包名使用;分割,默认全扫描 plugin.scanPackage("net.dreamlu"); // bean工厂,默认为DefaultBeanFactory,可实现IBeanFactory自定义扩展 // 对于将@EventListener写在不含无参构造器的类需要使用`ObjenesisBeanFactory` plugin.beanFactory(new DuangBeanFactory()); // 手动启动插件,用于main方法启动,jfinal中不需要,添加插件即可。 plugin.start(); // 停止插件,用于main方法测试 plugin.stop(); ``` ## 新建事件类 ```java // 继承 ApplicationEvent public class Test1Event extends ApplicationEvent { private static final long serialVersionUID = 6994987952247306131L; public Test1Event(Object source) { super(source); } } ``` ## 编写监听 ```java @EventListener public void listenTest1Event(Test1Event event) { System.out.println("Test1Event:" + event.getSource()); } ``` ## 发送事件 ```java EventKit.post(new Test1Event("hello1")); ``` ## @EventListener注解说明 ### 示例 ```java @EventListener(events = Test1Event.class, order = 1, async = true, condition = "event.isExec()") ``` ### 说明 > `events`支持的事件类型数组,用于将事件方法定义为`ApplicationEvent`或者自定义父类。 ```java @EventListener(events = Test1Event.class) public void applicationEvent(ApplicationEvent event) { String xx = (String) event.getSource(); System.out.println(Thread.currentThread().getName() + "\tsource:" + xx); } ``` > `order`排序,数值越小越先执行,默认为`Integer.MAX_VALUE` > `async`异步执行,需要插件开启`async()`或者自定义线程池。 > `condition`表达式条件,使用`event.xxxx,event.isExec() == true`判定event的属性或者方法。 ## 使用的场景优势 请参考[详解Spring事件驱动模型](http://jinnianshilongnian.iteye.com/blog/1902886) jar包下载 http://central.maven.org/maven2/net/dreamlu/JFinal-event/ 以上版本均已上传到maven仓库~ ``` <dependency> <groupId>net.dreamlu</groupId> <artifactId>JFinal-event</artifactId> <version>2.2.2</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`编写自己的事件类 ```java CtrlHolder holder = event.getCtrlHolder(); holder.getPara("p"); holder.getAttr("x"); holder.getHeader("x"); holder.getSessionAttr("x"); ``` >## 2017-11-29 v2.0.4 >添加`ObjenesisBeanFactory`处理不含有默认构造器的Bean >依赖`objenesis`jar包,下载地址: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-20 v1.5.1 >基于rmi的远程Event >## 2017-03-22 v1.4.2 >1. 更改默认线程池为SingleThreadExecutor,使异步执行有序化。 >2. 添加EventThreadFactory,处理异步时的异常避免影响服务请求。 > 建议:如果event需要发送大量的异步事件,建议使用自定义线程池。 > `eventPlugin.threadPool(Executors.newCachedThreadPool(new EventThreadFactory()));` >## 2017-02-15 v1.4.1 >1. 添加自定义线程池EventPlugin.threadPool(ExecutorService executorService)方法 >## 2016-08-19 v1.4.0 >1. 升级到JFinal2.2,JFinal低版本用户请使用`v1.2.0`。 >2. `EventKit.postEvent(event)`更改为`EventKit.post(event)`,`postEvent`不再建议使用。 >3. 添加`EventKit.post(tag, event)`方法,`@Listener(order = 2, tag = "save")`添加`tag`。 >## 2015-12-30 v1.3.0 >1. 升级到JFinal2.1,JFinal低版本用户请使用`v1.2.0` >## 2015-08-20 v1.2.0 >1. 解决部署时中文路径或者是空格找不到监听器 >## 2015-07-05 v1.0 >1. 调优,减少不必要的实例 >## 2015-07-04 v0.4.2 >1. 编译改为JDK1.6 >2. 新增监听器执行顺序@Listener(order = 1) 越小越优先执行,Default is Integer.MAX_VALUE >3. 新增单个监听器的,同步或者异步开关@Listener(enableAsync = true) ## 交流群 如梦技术:[`237587118`](http://shang.qq.com/wpa/qunwpa?idkey=f78fcb750b4f72c92ff4d375d2884dd69b552301a1f2681af956bd32700eb2c0) ## 捐助共勉 <img src="http://soft.dreamlu.net/weixin-9.jpg" width = "200" alt="微信捐助" align=center /> <img src="http://soft.dreamlu.net/alipay.png" width = "200" alt="支付宝捐助" align=center /> <img src="http://soft.dreamlu.net/qq-9.jpg" width = "200" alt="QQ捐助" align=center /> ## License ( The MIT License )

简介

JFinal-event消息驱动插件,无任何第三方依赖,小巧玲珑。 展开 收起
Java
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/goodhans/JFinal-event.git
[email protected]:goodhans/JFinal-event.git
goodhans
JFinal-event
JFinal-event
master

搜索帮助