JFinal-event事件驱动插件,无任何第三方依赖,小巧玲珑。 一晃Git@OSC上有5个多月没怎么提交代码了,前段时间群里的朋友也说他们公司也在用JFinal-event,深感荣幸。 1. 初始化插件 EventPlugin plugin = new EventPlugin();
// 设置为异步,默认同步,或者使用threadPool(ExecutorService executorService)自定义线程池。
plugin.async();
// 设置扫描jar包,默认不扫描
plugin.scanJar();
// 设置{敏感词}默认包,默认全扫描
plugin.scanPackage("net.dreamlu");
// 手动启动插件,用于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. 监听事件 @EventListener(order = 1, events = Test1Event.class)
public void xxxx(ApplicationEvent event) {
Object xx = event.getSource();
System.out.println(Thread.currentThread().getName() + " " + this.getClass() + " " + "\tsource:" + xx);
}
@EventListener
public void xxxx(Test1Event event) {
Object xx = event.getSource();
System.out.println(Thread.currentThread().getName() + " " + this.getClass() + " " + "\tsource:" + xx);
} 4. 发送事件 EventKit.post(new Test1Event("hello1")); @EventListener注解说明 @EventListener(events = Test1Event.class, order = 1, async = true, condition = "event.isExec()") events支持的事件类型数组,用于将事件方法定义为ApplicationEvent或者自定义父类。 @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 Maven引入: <dependency>
<groupId>net.dreamlu</groupId>
<artifactId>JFinal-event</artifactId>
<version>2.0.0</version>
</dependency> Jar包下来:http://central.maven.org/maven2/net/dreamlu/JFinal-event/ |