package com.example.demo.config;
import io.swagger.models.auth.In;
import org.apache.commons.lang3.reflect.FieldUtils;
import org.springframework.boot.SpringBootVersion;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.ReflectionUtils;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
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.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import java.lang.reflect.Field;
import java.util.*;
/**
* @author 86186
*/
@Configuration
public class SwaggerConfiguration implements WebMvcConfigurer {
private final SwaggerProperties swaggerProperties;
public SwaggerConfiguration(SwaggerProperties swaggerProperties) {
this.swaggerProperties = swaggerProperties;
}
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.OAS_30).pathMapping("/")
// 定义是否开启swagger,false为关闭,可以通过变量控制
.enable(swaggerProperties.getEnable())
// 将api的元信息设置为包含在json ResourceListing响应中。
.apiInfo(apiInfo())
// 接口调试地址
.host(swaggerProperties.getTryHost())
// 选择哪些接口作为swagger的doc发布
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
// 支持的通讯协议集合
.protocols(newHashSet("https", "http"))
// 授权信息设置,必要的header token等认证信息
.securitySchemes(securitySchemes())
// 授权信息全局应用
.securityContexts(securityContexts());
}
/**
* API 页面上半部分展示信息
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title(swaggerProperties.getApplicationName() + " Api Doc")
.description(swaggerProperties.getApplicationDescription())
.contact(new Contact("users", null, "734796109@qq.com"))
.version("Application Version: " + swaggerProperties.getApplicationVersion() + ", Spring Boot Version: " + SpringBootVersion.getVersion())
.build();
}
/**
* 设置授权信息
*/
private List<SecurityScheme> securitySchemes() {
ApiKey apiKey = new ApiKey("BASE_TOKEN", "token", In.HEADER.toValue());
return Collections.singletonList(apiKey);
}
/**
* 授权信息全局应用
*/
private List<SecurityContext> securityContexts() {
return Collections.singletonList(
SecurityContext.builder()
.securityReferences(Collections.singletonList(new SecurityReference("BASE_TOKEN", new AuthorizationScope[]{new AuthorizationScope("global", "")})))
.build()
);
}
@SafeVarargs
private final <T> Set<T> newHashSet(T... ts) {
if (ts.length > 0) {
return new LinkedHashSet<>(Arrays.asList(ts));
}
return null;
}
/**
* 通用拦截器排除swagger设置,所有拦截器都会自动加swagger相关的资源排除信息
*/
@SuppressWarnings("unchecked")
@Override
public void addInterceptors(InterceptorRegistry registry) {
try {
Field registrationsField = FieldUtils.getField(InterceptorRegistry.class, "registrations", true);
List<InterceptorRegistration> registrations = (List<InterceptorRegistration>) ReflectionUtils.getField(registrationsField, registry);
if (registrations != null) {
for (InterceptorRegistration interceptorRegistration : registrations) {
interceptorRegistration
.excludePathPatterns("/swagger**/**")
.excludePathPatterns("/webjars/**")
.excludePathPatterns("/v3/**")
.excludePathPatterns("/doc.html")
.excludePathPatterns("/error");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
spring-boot骨架工程 (154个子文件)
$PRODUCT_WORKSPACE_FILE$ 496B
SwaggerConfiguration.class 7KB
SwaggerProperties.class 4KB
UserInfo.class 3KB
SwaggerApiResponse.class 3KB
SwaggerApiRequest.class 3KB
RedisController.class 1KB
UserInfoController.class 1KB
SwaggerAipController.class 1KB
DemoApplication.class 964B
HelloController.class 689B
SwaggerApi.class 676B
DemoApplicationTests.class 531B
UserInfoMapper.class 334B
mvnw.cmd 7KB
.gitignore 395B
springdemo.iml 13KB
maven-wrapper.jar 57KB
SwaggerConfiguration.java 5KB
SwaggerProperties.java 781B
UserInfoController.java 752B
RedisController.java 740B
SwaggerApi.java 658B
SwaggerAipController.java 652B
DemoApplication.java 584B
SwaggerApiResponse.java 483B
SwaggerApiRequest.java 481B
HelloController.java 399B
UserInfoMapper.java 266B
UserInfo.java 257B
DemoApplicationTests.java 215B
HELP.md 891B
mvnw 10KB
maven-wrapper.properties 233B
workspace.xml 3KB
pom.xml 3KB
Project_Default.xml 1KB
UserInfoMapper.xml 983B
UserInfoMapper.xml 983B
compiler.xml 821B
Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_13_1.xml 760B
Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_1_3_2.xml 754B
Maven__org_springframework_plugin_spring_plugin_metadata_2_0_0_RELEASE.xml 745B
Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_6_4.xml 737B
Maven__org_springframework_boot_spring_boot_starter_data_redis_2_6_4.xml 737B
Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml 724B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_13_1.xml 719B
Maven__org_springframework_plugin_spring_plugin_core_2_0_0_RELEASE.xml 717B
Maven__org_springframework_boot_spring_boot_starter_logging_2_6_4.xml 716B
Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_1_3_2.xml 712B
Maven__org_springframework_boot_spring_boot_starter_tomcat_2_6_4.xml 709B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_13_1.xml 705B
Maven__org_springframework_boot_spring_boot_autoconfigure_2_6_4.xml 702B
Maven__org_springframework_boot_spring_boot_starter_json_2_6_4.xml 695B
Maven__org_springframework_boot_spring_boot_starter_test_2_6_4.xml 695B
Maven__org_springframework_boot_spring_boot_starter_jdbc_2_6_4.xml 695B
Maven__org_springframework_boot_spring_boot_starter_web_2_6_4.xml 688B
Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_58.xml 684B
Maven__com_fasterxml_jackson_core_jackson_annotations_2_13_1.xml 675B
Maven__org_springframework_spring_context_support_5_3_16.xml 668B
Maven__org_springframework_data_spring_data_keyvalue_2_6_2.xml 667B
Maven__io_netty_netty_tcnative_classes_2_0_48_Final.xml 666B
Maven__org_springframework_boot_spring_boot_starter_2_6_4.xml 660B
Maven__org_springframework_data_spring_data_commons_2_6_2.xml 660B
Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml 657B
Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml 657B
Maven__org_junit_platform_junit_platform_commons_1_8_2.xml 657B
Maven__com_fasterxml_jackson_core_jackson_databind_2_13_1.xml 654B
Maven__io_springfox_springfox_bean_validators_3_0_0.xml 654B
Maven__org_junit_platform_junit_platform_engine_1_8_2.xml 650B
Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_58.xml 649B
Maven__io_springfox_springfox_spring_webflux_3_0_0.xml 647B
Maven__io_springfox_springfox_swagger_common_3_0_0.xml 647B
Maven__org_springframework_data_spring_data_redis_2_6_2.xml 646B
Maven__io_springfox_springfox_spring_webmvc_3_0_0.xml 640B
Maven__org_junit_jupiter_junit_jupiter_params_5_8_2.xml 639B
Maven__org_springframework_boot_spring_boot_test_2_6_4.xml 639B
Maven__org_junit_jupiter_junit_jupiter_engine_5_8_2.xml 639B
Maven__io_swagger_core_v3_swagger_annotations_2_1_2.xml 636B
Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_58.xml 635B
Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml 635B
Maven__org_springframework_spring_expression_5_3_16.xml 633B
Maven__io_springfox_springfox_boot_starter_3_0_0.xml 633B
Maven__org_apache_logging_log4j_log4j_to_slf4j_2_17_1.xml 632B
Maven__com_fasterxml_jackson_core_jackson_core_2_13_1.xml 626B
Maven__org_mockito_mockito_junit_jupiter_4_0_0.xml 622B
Maven__io_springfox_springfox_spring_web_3_0_0.xml 619B
Maven__io_springfox_springfox_swagger_ui_3_0_0.xml 619B
Maven__org_reactivestreams_reactive_streams_1_0_3.xml 619B
Maven__org_junit_jupiter_junit_jupiter_api_5_8_2.xml 618B
Maven__io_netty_netty_transport_4_1_74_Final.xml 617B
Maven__org_springframework_spring_context_5_3_16.xml 612B
Maven__io_springfox_springfox_data_rest_3_0_0.xml 612B
Maven__io_lettuce_lettuce_core_6_1_6_RELEASE.xml 611B
Maven__io_swagger_swagger_annotations_1_5_20.xml 611B
Maven__io_netty_netty_resolver_4_1_74_Final.xml 610B
Maven__net_bytebuddy_byte_buddy_agent_1_11_22.xml 609B
Maven__org_springframework_spring_webmvc_5_3_16.xml 605B
Maven__io_springfox_springfox_swagger2_3_0_0.xml 605B
Maven__org_springframework_boot_spring_boot_2_6_4.xml 604B
共 154 条
- 1
- 2
这个码农不太萌
- 粉丝: 4
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0