perf[pojo]: 优化了事件和消息类的警告日志

This commit is contained in:
jaysunxiao committed 2021-06-26 12:06:29 +08:00
1 parent c1fe5e8357
commit 1babd554e4
2 files changed
+21 -8

No files matched your search

@@ -18,8 +18,11 @@ 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;
import com.zfoo.event.model.vo.EventReceiverDefinition; import com.zfoo.event.model.vo.EventReceiverDefinition;
import com.zfoo.protocol.collection.ArrayUtils;
import com.zfoo.protocol.util.ReflectionUtils; import com.zfoo.protocol.util.ReflectionUtils;
import com.zfoo.protocol.util.StringUtils; import com.zfoo.protocol.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.beans.factory.config.BeanPostProcessor;
@@ -31,11 +34,21 @@ import java.lang.reflect.Modifier;
*/ */
public class EventRegisterProcessor implements BeanPostProcessor { public class EventRegisterProcessor implements BeanPostProcessor {
private static final Logger logger = LoggerFactory.getLogger(EventRegisterProcessor.class);
@Override @Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
var clazz = bean.getClass();
var methods = ReflectionUtils.getMethodsByAnnoInPOJOClass(clazz, EventReceiver.class);
if (ArrayUtils.isEmpty(methods)) {
return bean;
}
if (!ReflectionUtils.isPojoClass(clazz)) {
logger.warn("事件注册类[{}]不是POJO类,父类的事件接收不会被扫描到", clazz);
}
try { try {
var clazz = bean.getClass();
var methods = ReflectionUtils.getMethodsByAnnoInPOJOClass(clazz, EventReceiver.class);
for (var method : methods) { for (var method : methods) {
var paramClazzs = method.getParameterTypes(); var paramClazzs = method.getParameterTypes();
if (paramClazzs.length != 1) { if (paramClazzs.length != 1) {
@@ -15,12 +15,9 @@ import com.zfoo.protocol.collection.ArrayUtils;
import com.zfoo.protocol.util.AssertionUtils; import com.zfoo.protocol.util.AssertionUtils;
import com.zfoo.protocol.util.ReflectionUtils; import com.zfoo.protocol.util.ReflectionUtils;
import com.zfoo.protocol.util.StringUtils; import com.zfoo.protocol.util.StringUtils;
import javassist.CannotCompileException;
import javassist.NotFoundException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
/** /**
@@ -57,9 +54,12 @@ public abstract class PacketBus {
var clazz = bean.getClass(); var clazz = bean.getClass();
var methods = ReflectionUtils.getMethodsByAnnoInPOJOClass(clazz, PacketReceiver.class); var methods = ReflectionUtils.getMethodsByAnnoInPOJOClass(clazz, PacketReceiver.class);
if (ArrayUtils.isEmpty(methods)) {
return;
}
if (ArrayUtils.isNotEmpty(methods) && !ReflectionUtils.isPojoClass(clazz)) { if (!ReflectionUtils.isPojoClass(clazz)) {
logger.warn("消息注册类不是POJO类,父类的不会被扫描到"); logger.warn("消息注册类[{}]不是POJO类,父类的消息接收不会被扫描到", clazz);
} }
for (var method : methods) { for (var method : methods) {
@@ -111,7 +111,7 @@ public abstract class PacketBus {
var receiverDefinition = new PacketReceiverDefinition(bean, method, packetClazz, attachmentClazz); var receiverDefinition = new PacketReceiverDefinition(bean, method, packetClazz, attachmentClazz);
var enhanceReceiverDefinition = EnhanceUtils.createPacketReceiver(receiverDefinition); var enhanceReceiverDefinition = EnhanceUtils.createPacketReceiver(receiverDefinition);
packetReceiverList[protocolId] = enhanceReceiverDefinition; packetReceiverList[protocolId] = enhanceReceiverDefinition;
} catch (NoSuchFieldException | IllegalAccessException | InstantiationException | InvocationTargetException | NoSuchMethodException | CannotCompileException | NotFoundException e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }