From 08efd7d8b01c45eb0bda9dc48a8a770727fe5303 Mon Sep 17 00:00:00 2001 From: Parker Date: Tue, 22 Sep 2020 20:59:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E9=97=AD=20Controller=20=E9=87=8D?= =?UTF-8?q?=E5=91=BD=E5=90=8D=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserCachingOperationNameGenerator.java | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 opsli-base-support/opsli-core/src/main/java/org/opsli/core/aspect/UserCachingOperationNameGenerator.java diff --git a/opsli-base-support/opsli-core/src/main/java/org/opsli/core/aspect/UserCachingOperationNameGenerator.java b/opsli-base-support/opsli-core/src/main/java/org/opsli/core/aspect/UserCachingOperationNameGenerator.java new file mode 100644 index 00000000..a0eef8a0 --- /dev/null +++ b/opsli-base-support/opsli-core/src/main/java/org/opsli/core/aspect/UserCachingOperationNameGenerator.java @@ -0,0 +1,51 @@ +package org.opsli.core.aspect; + +import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.stereotype.Component; + +import java.util.Map; + +import static com.google.common.collect.Maps.newHashMap; + +/** + * 替换组件相同名称方法 切面 + */ +@Slf4j +@Component +@Aspect +public class UserCachingOperationNameGenerator { + + + private final Map generated = Maps.newHashMap(); + + + @Pointcut("execution(* springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator.startingWith(String))") + public void c() { + } + + + @Around("c()") + public Object a(ProceedingJoinPoint point) { + Object[] args = point.getArgs(); + return startingWith(String.valueOf(args[0])); + } + + private String startingWith(String prefix) { + if (generated.containsKey(prefix)) { + generated.put(prefix, generated.get(prefix) + 1); + String nextUniqueOperationName = String.format("%s_%s", prefix, generated.get(prefix)); + //log.warn("组件中存在相同的方法名称,自动生成组件方法唯一名称进行替换: {}", nextUniqueOperationName); + return nextUniqueOperationName; + } else { + generated.put(prefix, 0); + return prefix; + } + } +} + +