package com.qianwen.smartman.common.launch; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.StrUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import org.springframework.web.method.HandlerMethod; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spi.service.OperationBuilderPlugin; import springfox.documentation.spi.service.contexts.OperationContext; import springfox.documentation.spi.service.contexts.RequestMappingContext; import springfox.documentation.spring.web.WebMvcRequestHandler; @Component @Order(-2147481647) @ConditionalOnProperty(name ="enable" ,prefix = "swagger",havingValue = "true",matchIfMissing = true) public class SwaggerPlugin implements OperationBuilderPlugin { private static final Logger log = LoggerFactory.getLogger(SwaggerPlugin.class); @Override public void apply(OperationContext operationContext) { RequestMappingContext requestContext = (RequestMappingContext) BeanUtil.getProperty(operationContext, "requestContext"); WebMvcRequestHandler handler = (WebMvcRequestHandler) BeanUtil.getProperty(requestContext, "handler"); HandlerMethod handlerMethod = (HandlerMethod) BeanUtil.getProperty(handler, "handlerMethod"); String controllerName = handlerMethod.getBeanType().getSimpleName(); String operationNameStem = operationContext.getName(); String prefix = StrUtil.replace(controllerName, "Controller", ""); String newName = StrUtil.format("{}_{}", new Object[]{prefix, operationNameStem}); log.info("operationId:{}", newName); operationContext.operationBuilder().codegenMethodNameStem(newName); } public boolean supports(DocumentationType documentationType) { return true; } }