JFinal-event 2.x 参考Spring 4.2.x中Event的使用方式而生,为JFinal用户带来更多方便。
更新情况:
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方法即可。
JFinal-event 2.x的使用:
1. 初始化插件
EventPlugin plugin = new EventPlugin(); // 设置为异步,默认同步,或者使用`threadPool(ExecutorService executorService)`自定义线程池。 plugin.async(); // 设置扫描jar包,默认不扫描 plugin.scanJar(); // 设置监听器默认包,默认全扫描,支持;分隔多个包 plugin.scanPackage("net.dreamlu"); // bean工厂,默认为DefaultBeanFactory,可实现IBeanFactory自定义扩展,可扩展从IOC容器中获取 plugin.beanFactory(new ObjenesisBeanFactory()); // 手动启动插件,用于main方法启动,jfinal中不需要,添加插件即可。 plugin.start(); // 停止插件,用于main方法测试 plugin.stop();
2. 新建事件类
// 继承 ApplicationEvent public class Test1Event extends ApplicationEvent { private static final long serialVersionUID = 6994987952247306131L; public Test1Event(Object source) { super(source); } }
3. 编写监听
监听器可写在任何有默认构造器(无参构造器)的类(包括Controller、Model)中,如果类不能使用无参构造器初始化,请设置为 ObjenesisBeanFactory bean工厂,依赖 objenesis jar包。
public class TestListener { @EventListener public void listenTest1Event(Test1Event event) { System.out.println("Test1Event:" + event.getSource()); } @EventListener public void listenTest1Event(Test2Event event) { System.out.println("Test1Event:" + event.getSource()); } }
4. 发送事件
EventKit.post(new Test1Event("hello1"));
更多示例代码和更新记录请查看gitee中的readme说明。
项目:JFinal-event