JFinal-event 2.x 模(cao)仿(xi)Spring 4.2 中的事件驱动而生,支持JFinal 3.1和3.1以上版本。
JFinal-event 2.x 在使用上更加简单和灵活。你不仅不用再新建一堆Listener,还可以使用 @EventListener 注解中的 events 和 condition 属性,复用你的Event。
你现在可以将 @EventListener 写到任何能初始化的java类中,对不带默认构造器的类你需要配置为ObjenesisBeanFactory,具体请看下文。
JFinal-event 2.0.4新特性:
1. 扫描包支持用;分割,如:net.dreamlu.a;net.dreamlu.b
2. 插件支持自定义Bean工厂,可实现IBeanFactory自定义扩展。(可实现单例Bean、IOC Bean等...自行发挥)使用plugin.beanFactory(new DuangBeanFactory());
默认为DefaultBeanFactory,内置有DuangBeanFactory和ObjenesisBeanFactory。
ObjenesisBeanFactory用于将 @EventListener 写到不带无参构造器的java类,需要添加 objenesis 的 jar 包,下载地址:http://mvnrepository.com/artifact/org.objenesis/objenesis/2.6
@EventListener注解说明
@EventListener(events = Test1Event.class, order = 1, async = true, condition = "event.isExec()")
events 支持的事件类型数组,用于将事件方法定义为ApplicationEvent或者自定义父类。
public class TestXxx { @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的属性或者方法。
更多使用说明请查看:http://www.jfinal.com/project/7