Springboot 启动信息:Generating unique operation named

Springboot 启动信息:Generating unique operation named


1、springboot 项目启动时,显示Generating unique operation named

Generating unique operation named:delUsingPOST_1
Generating unique operation named:sortedUsingPOST_1
Generating unique operation named:formUsingGET_1
Generating unique operation named:listUsingGET_1
Generating unique operation named:getPosterNewUsingGET_1
Generating unique operation named:addUsingPOST_1

这是什么意思呢?这是因为spring 在加载controller 的时候,发现这些类里面的方法名称有重复的,所以给你自动生成了一些名称,用以区分这些方法

2、处理这些信息

1、如不在意此类信息,则可以通过配置日志,将其关闭

2、通过aop 切面切入改方法,不进行日志打印,或者以警告的方式进行日志打印,看到警告则进行规避,代码如下

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;

/**
 * @author Created by 谭健 on 2019/11/15. 星期五. 10:47.
 * © All Rights Reserved.
 */
@Slf4j
@Component
@Aspect
public class UserCachingOperationNameGenerator {


  private Map<String, Integer> generated = 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;
    }
  }
}


发布了442 篇原创文章 · 获赞 1375 · 访问量 210万+

猜你喜欢

转载自blog.csdn.net/qq_15071263/article/details/103208317