百木园-与人分享,
就是让自己快乐。

SpringBoot中如何使用配置禁用swagger呢?

转自:

http://www.java265.com/JavaCourse/202204/2931.html

SpringBoot:

        Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者


 

在生产环境中,我们需关闭swagger配置,避免接口对外暴露而产生各种危险,具体的操作方式如下所示:

禁用方式1: 使用@Value

package com.java265;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2; 

@Configuration
@EnableSwagger2
public class Swagger2Config extends WebMvcConfigurerAdapter {

    @Value(\"${swagger.enable}\")
    private Boolean enable;

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .enable(enable)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage(\"com.dc.controller\"))
                .paths(PathSelectors.any())
                //.paths(PathSelectors.none())
                .build();
    }

    private ApiInfo apiInfo()  {
        return new ApiInfoBuilder()
                .title(\"auth系统数据接口文档\")
                .description(\"此系统为新架构Api说明文档\")
                .termsOfServiceUrl(\"\")
                .contact(new Contact(\"admin@java265.com\", \"\", \"*********\"))
                .version(\"1.0\")
                .build();
    }

    /**
     * swagger ui资源映射
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler(\"swagger-ui.html\")
                .addResourceLocations(\"classpath:/META-INF/resources/\");

        registry.addResourceHandler(\"/webjars/**\")
                .addResourceLocations(\"classpath:/META-INF/resources/webjars/\");
    }

    /**
     * swagger-ui.html路径映射,浏览器中使用/api-docs访问
     * @param registry
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addRedirectViewController(\"/api-docs\",\"/swagger-ui.html\");
    }
}

方式二:使用Profile注解

使用注解@Profile({“dev”,“test”})
在开发或测试环境开启

package com.java265.config;

import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
@Configuration
@EnableSwagger2
@Profile({“dev”,“test”})
public class Swagger2Config extends WebMvcConfigurerAdapter {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage(\"com.dc.controller\"))
                .paths(PathSelectors.any())
                //.paths(PathSelectors.none())
                .build();
    }

    private ApiInfo apiInfo()  {
        return new ApiInfoBuilder()
                .title(\"auth系统数据接口文档\")
                .description(\"此系统为新架构Api说明文档\")
                .termsOfServiceUrl(\"\")
                .contact(new Contact(\"*****\", \"\", \"**\"))
                .version(\"1.0\")
                .build();
    }

    /**
     * swagger ui资源映射
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler(\"swagger-ui.html\")
                .addResourceLocations(\"classpath:/META-INF/resources/\");

        registry.addResourceHandler(\"/webjars/**\")
                .addResourceLocations(\"classpath:/META-INF/resources/webjars/\");
    }

    /**
     * swagger-ui.html路径映射,浏览器中使用/api-docs访问
     * @param registry
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addRedirectViewController(\"/api-docs\",\"/swagger-ui.html\");
    }
}

来源:https://www.cnblogs.com/java265/p/16483285.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » SpringBoot中如何使用配置禁用swagger呢?

相关推荐

  • 暂无文章