From 26fc652d33fb82a75d6ec7771ca50ee414b21723 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期二, 11 一月 2022 16:58:47 +0800 Subject: [PATCH] update 统一代码间隔符 --- ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java | 100 +++++++++++++++++++++++-------------------------- 1 files changed, 47 insertions(+), 53 deletions(-) diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java index 8b43f17..29d79d1 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java @@ -1,13 +1,13 @@ package com.ruoyi.framework.config; import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; -import com.ruoyi.common.config.RuoYiConfig; -import io.swagger.annotations.ApiOperation; +import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver; +import com.ruoyi.common.properties.TokenProperties; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.spring.SpringUtils; +import com.ruoyi.framework.config.properties.SwaggerProperties; +import io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; @@ -16,66 +16,58 @@ import springfox.documentation.spi.DocumentationType; import springfox.documentation.spi.service.contexts.SecurityContext; import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; +import javax.annotation.PostConstruct; import java.util.ArrayList; import java.util.List; /** - * Swagger2鐨勬帴鍙i厤缃� + * Swagger 鏂囨。閰嶇疆 * * @author Lion Li */ @Configuration -@EnableSwagger2 @EnableKnife4j -@ConditionalOnClass({Docket.class, ApiInfoBuilder.class}) -@ConditionalOnProperty(prefix = "swagger", value = "enable", matchIfMissing = true) public class SwaggerConfig { - /** - * 绯荤粺鍩虹閰嶇疆 - */ + @Autowired - private RuoYiConfig ruoyiConfig; + private SwaggerProperties swaggerProperties; - /** - * 鏍囬 - */ - @Value("${swagger.title}") - private String title; + @Autowired + private TokenProperties tokenProperties; - /** - * 鎻忚堪 - */ - @Value("${swagger.description}") - private String description; - - /** - * 鐗堟湰 - */ - @Value("${swagger.version}") - private String version; + @Autowired + private OpenApiExtensionResolver openApiExtensionResolver; /** * 鍒涘缓API */ - @Bean - public Docket createRestApi() { - return new Docket(DocumentationType.SWAGGER_2) + @PostConstruct + public void createRestApi() { + for (SwaggerProperties.Groups group : swaggerProperties.getGroups()) { + String basePackage = group.getBasePackage(); + Docket docket = new Docket(DocumentationType.OAS_30) + .enable(swaggerProperties.getEnabled()) // 鐢ㄦ潵鍒涘缓璇PI鐨勫熀鏈俊鎭紝灞曠ず鍦ㄦ枃妗g殑椤甸潰涓紙鑷畾涔夊睍绀虹殑淇℃伅锛� .apiInfo(apiInfo()) // 璁剧疆鍝簺鎺ュ彛鏆撮湶缁橲wagger灞曠ず .select() // 鎵弿鎵�鏈夋湁娉ㄨВ鐨刟pi锛岀敤杩欑鏂瑰紡鏇寸伒娲� - .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) + //.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) // 鎵弿鎸囧畾鍖呬腑鐨剆wagger娉ㄨВ - // .apis(RequestHandlerSelectors.basePackage("com.ruoyi.project.tool.swagger")) + .apis(RequestHandlerSelectors.basePackage(basePackage)) // 鎵弿鎵�鏈� .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .build() - /* 璁剧疆瀹夊叏妯″紡锛宻wagger鍙互璁剧疆璁块棶token */ + .groupName(group.getName()) + // 璁剧疆瀹夊叏妯″紡锛宻wagger鍙互璁剧疆璁块棶token .securitySchemes(securitySchemes()) - .securityContexts(securityContexts()); + .securityContexts(securityContexts()) + .extensions(openApiExtensionResolver.buildExtensions(group.getName())) + .pathMapping(swaggerProperties.getPathMapping()); + String beanName = StringUtils.substringAfterLast(basePackage, ".") + "Docket"; + SpringUtils.registerBean(beanName, docket); + } } /** @@ -83,7 +75,8 @@ */ private List<SecurityScheme> securitySchemes() { List<SecurityScheme> apiKeyList = new ArrayList<SecurityScheme>(); - apiKeyList.add(new ApiKey("Authorization", "Authorization", "header")); + String header = tokenProperties.getHeader(); + apiKeyList.add(new ApiKey(header, header, In.HEADER.toValue())); return apiKeyList; } @@ -93,10 +86,10 @@ private List<SecurityContext> securityContexts() { List<SecurityContext> securityContexts = new ArrayList<>(); securityContexts.add( - SecurityContext.builder() - .securityReferences(defaultAuth()) - .forPaths(PathSelectors.regex("^(?!auth).*$")) - .build()); + SecurityContext.builder() + .securityReferences(defaultAuth()) + .operationSelector(o -> o.requestMappingPattern().matches("/.*")) + .build()); return securityContexts; } @@ -108,7 +101,7 @@ AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; authorizationScopes[0] = authorizationScope; List<SecurityReference> securityReferences = new ArrayList<>(); - securityReferences.add(new SecurityReference("Authorization", authorizationScopes)); + securityReferences.add(new SecurityReference(tokenProperties.getHeader(), authorizationScopes)); return securityReferences; } @@ -117,15 +110,16 @@ */ private ApiInfo apiInfo() { // 鐢ˋpiInfoBuilder杩涜瀹氬埗 + SwaggerProperties.Contact contact = swaggerProperties.getContact(); return new ApiInfoBuilder() - // 璁剧疆鏍囬 - .title(title) - // 鎻忚堪 - .description(description) - // 浣滆�呬俊鎭� - .contact(new Contact(ruoyiConfig.getName(), null, null)) - // 鐗堟湰 - .version(version) - .build(); + // 璁剧疆鏍囬 + .title(swaggerProperties.getTitle()) + // 鎻忚堪 + .description(swaggerProperties.getDescription()) + // 浣滆�呬俊鎭� + .contact(new Contact(contact.getName(), contact.getUrl(), contact.getEmail())) + // 鐗堟湰 + .version(swaggerProperties.getVersion()) + .build(); } } -- Gitblit v1.9.3