Merge pull request #45 from Yuao-github/main

perf[event] add field "async" in @EventReceiver
This commit is contained in:
godotg authored and GitHub committed 2023-02-15 20:22:43 +08:00
commit 6ba3bfa16b
4 files changed
+3 -14

No files matched your search

@@ -1,9 +0,0 @@
package com.zfoo.event.model.anno;
import java.lang.annotation.*;
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface AsyncExecute {
}
@@ -26,4 +26,5 @@ import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD}) @Target({ElementType.METHOD})
public @interface EventReceiver { public @interface EventReceiver {
boolean async() default false;
} }
@@ -14,7 +14,6 @@
package com.zfoo.event.schema; package com.zfoo.event.schema;
import com.zfoo.event.manager.EventBus; import com.zfoo.event.manager.EventBus;
import com.zfoo.event.model.anno.AsyncExecute;
import com.zfoo.event.model.anno.EventReceiver; import com.zfoo.event.model.anno.EventReceiver;
import com.zfoo.event.model.event.IEvent; import com.zfoo.event.model.event.IEvent;
import com.zfoo.event.model.vo.EnhanceUtils; import com.zfoo.event.model.vo.EnhanceUtils;
@@ -84,7 +83,7 @@ public class EventRegisterProcessor implements BeanPostProcessor {
var enhanceReceiverDefinition = EnhanceUtils.createEventReceiver(receiverDefinition); var enhanceReceiverDefinition = EnhanceUtils.createEventReceiver(receiverDefinition);
//异步执行标志,false表示同步执行,true表示异步执行 //异步执行标志,false表示同步执行,true表示异步执行
var asyncFlag = method.isAnnotationPresent(AsyncExecute.class); var asyncFlag = method.getDeclaredAnnotation(EventReceiver.class).async();
// key:class类型 value:观察者 注册Event的receiverMap中 // key:class类型 value:观察者 注册Event的receiverMap中
EventBus.registerEventReceiver(eventClazz, enhanceReceiverDefinition, asyncFlag); EventBus.registerEventReceiver(eventClazz, enhanceReceiverDefinition, asyncFlag);
} }
@@ -13,7 +13,6 @@
package com.zfoo.event; package com.zfoo.event;
import com.zfoo.event.model.anno.AsyncExecute;
import com.zfoo.event.model.anno.EventReceiver; import com.zfoo.event.model.anno.EventReceiver;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -33,8 +32,7 @@ public class MyController2 {
* *
* 异步事件会被不会立刻执行,注意日志打印的线程号 * 异步事件会被不会立刻执行,注意日志打印的线程号
*/ */
@AsyncExecute @EventReceiver(async = true)
@EventReceiver
public void onMyNoticeEvent(MyNoticeEvent event) { public void onMyNoticeEvent(MyNoticeEvent event) {
logger.info("方法2异步执行事件:" + event.getMessage()); logger.info("方法2异步执行事件:" + event.getMessage());
} }