feat: 升级SpringBoot3

This commit is contained in:
haoxr
2023-02-06 09:40:50 +08:00
parent 115de0bfcb
commit 9d73197bd8
43 changed files with 365 additions and 383 deletions

View File

@@ -1,82 +1,54 @@
package com.youlai.system.config;
import cn.hutool.core.collection.CollectionUtil;
import io.swagger.annotations.Api;
import cn.hutool.core.util.RandomUtil;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import org.springdoc.core.customizers.GlobalOpenApiCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo())
.groupName("权限服务")
//是否开启 (true 开启 false隐藏。生产环境建议隐藏)
//.enable(false)
.select()
//扫描的路径包,设置basePackage会将包下的所有被@Api标记类的所有方法作为api
.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
//指定路径处理PathSelectors.any()代表所有的路径
.paths(PathSelectors.any())
.build().securityContexts(CollectionUtil.newArrayList(securityContext()))
.securitySchemes(CollectionUtil.newArrayList(apiKey()));
}
/**
* 配置基本信息
* 根据@Tag 上的排序写入x-order
*
* @return
* @return the global open api customizer
*/
@Bean
public ApiInfo apiInfo() {
return new ApiInfoBuilder()
//设置文档标题(API名称)
.title("SpringBoot单体应用开发文档")
//文档描述
.description("快速开发文档-接口说明")
//版本号
.version("1.0.0")
//联系人
.contact(new Contact("", "http://localhost", ""))
.build();
public GlobalOpenApiCustomizer orderGlobalOpenApiCustomizer() {
return openApi -> {
if (openApi.getTags() != null) {
openApi.getTags().forEach(tag -> {
Map<String, Object> map = new HashMap<>();
map.put("x-order", RandomUtil.randomInt(0, 100));
tag.setExtensions(map);
});
}
if (openApi.getPaths() != null) {
openApi.addExtension("x-test123", "333");
openApi.getPaths().addExtension("x-abb", RandomUtil.randomInt(1, 100));
}
};
}
private List<SecurityScheme> securitySchemes() {
List<SecurityScheme> apiKeyList= new ArrayList<>();
@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI()
.info(new Info()
.title("XXX用户系统API")
.version("1.0")
apiKeyList.add(HttpAuthenticationScheme.JWT_BEARER_BUILDER.name("Authorization").build());
return apiKeyList;
.description("Knife4j集成springdoc-openapi示例")
.termsOfService("http://doc.xiaominfo.com")
.license(new License().name("Apache 2.0")
.url("http://doc.xiaominfo.com")));
}
private ApiKey apiKey() {
return new ApiKey("Authorization", "Authorization", "header");
}
List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
return CollectionUtil.newArrayList(new SecurityReference("Authorization", authorizationScopes));
}
private SecurityContext securityContext() {
return SecurityContext.builder()
.securityReferences(defaultAuth())
//.forPaths(PathSelectors.regex(".*?208.*$"))
.build();
}
}