JFinal-event v2.2.2 发布,支持JFinal 3.5 新版本inject

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说明。

评论区

杜福忠

2018-10-10 18:35

动作迅速!

lyh061619

2018-10-10 21:52

动作迅速!

prelove

2018-10-11 13:41

动作迅速!

要输就输给追求

2018-10-16 18:11

很好。这个东西对我帮助很大。感谢分享

hen

2019-01-25 10:40

请问在事件监听器里支持事务吗

Dreamlu

2019-01-25 20:46

@hen 监听器里的事物,跟这个没关系哦,jfinal是支持的。同步相当于方法调用,