Ver código fonte

优化数据操作事件模型处理逻辑

woody 1 ano atrás
pai
commit
986728eddb

+ 18 - 20
framework-database/src/main/java/com/chelvc/framework/database/support/DefaultEnhanceService.java

@@ -35,8 +35,21 @@ public class DefaultEnhanceService<M extends BaseMapper<T>, T> extends ServiceIm
     private final List<DeleteListener<T>> deleteListeners = Lists.newArrayListWithCapacity(0);
     private final List<ModifyListener<T>> modifyListeners = Lists.newArrayListWithCapacity(0);
 
+    /**
+     * 判断是否是当前数据模型监听器
+     *
+     * @param type     操作类型
+     * @param listener 监听器实例
+     * @return true/false
+     */
+    private boolean isEntityListener(Class<?> type, OperateListener<?> listener) {
+        Type parameterized = ObjectUtils.lookupSuperclassParameterized(listener.getClass(), type);
+        return ObjectUtils.type2class(parameterized) == this.getEntityClass();
+    }
+
     @Override
     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+        // 注册事件监听器
         applicationContext.getBeansOfType(OperateListener.class).values().forEach(this::register);
     }
 
@@ -56,28 +69,13 @@ public class DefaultEnhanceService<M extends BaseMapper<T>, T> extends ServiceIm
 
     @Override
     public synchronized void register(@NonNull OperateListener<T> listener) {
-        // 校验监听数据类型与当前数据模型类型是否匹配
-        Class<?> type;
-        if (listener instanceof AddListener) {
-            type = AddListener.class;
-        } else if (listener instanceof DeleteListener) {
-            type = DeleteListener.class;
-        } else if (listener instanceof ModifyListener) {
-            type = ModifyListener.class;
-        } else {
-            type = OperateListener.class;
-        }
-        Type parameterized = ObjectUtils.lookupSuperclassParameterized(listener.getClass(), type);
-        if (ObjectUtils.type2class(parameterized) != this.getEntityClass()) {
-            return;
-        }
-
-        // 注册监听器
-        if (listener instanceof AddListener) {
+        if (listener instanceof AddListener && this.isEntityListener(AddListener.class, listener)) {
             this.addListeners.add((AddListener<T>) listener);
-        } else if (listener instanceof DeleteListener) {
+        }
+        if (listener instanceof DeleteListener && this.isEntityListener(DeleteListener.class, listener)) {
             this.deleteListeners.add((DeleteListener<T>) listener);
-        } else if (listener instanceof ModifyListener) {
+        }
+        if (listener instanceof ModifyListener && this.isEntityListener(ModifyListener.class, listener)) {
             this.modifyListeners.add((ModifyListener<T>) listener);
         }
     }