Spring Boot 禁用 Swagger 的三种方式

1 Spring Boot 禁用 Swagger 的三种方式

一、序言

在生产环境下,我们需要关闭swagger配置,避免暴露接口的这种危险行为。

二、方法:

禁用方法1:

使用注解 @Value() 推荐使用

package com.dc.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;
/** * @author zhaohp * @version V1.0 * @Package com.dc.config * @date 2018/1/16 17:33 * @Description: 主要用途:开启在线接口文档和添加相关配置 */@Configuration@EnableSwagger2public 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("赵化鹏 [email protected]", "", "[email protected]"))                .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");    }}

禁用方法2:

使用注解@Profile({“dev”,“test”}) 表示在开发或测试环境开启,而在生产关闭。(推荐使用)​​​​​​​

package com.dc.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;
/** * @author zhaohp * @version V1.0 * @Package com.dc.config * @date 2018/1/16 17:33 * @Description: 主要用途:开启在线接口文档和添加相关配置 */@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("赵化鹏 [email protected]", "", "[email protected]"))                .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");    }}

禁用方法3:

使用注解@ConditionalOnProperty(name = “swagger.enable”, havingValue = “true”) 然后在测试配置或者开发配置中 添加 swagger.enable = true 即可开启,生产环境不填则默认关闭Swagger.​​​​​​​

package com.dc.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;
/** * @author zhaohp * @version V1.0 * @Package com.dc.config * @date 2018/1/16 17:33 * @Description: 主要用途:开启在线接口文档和添加相关配置 */@Configuration@EnableSwagger2@ConditionalOnProperty(name ="enabled" ,prefix = "swagger",havingValue = "true",matchIfMissing = true)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("赵化鹏 [email protected]", "", "[email protected]"))                .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");    }}
#Swagger lockswagger:    enabled: true
发布了8 篇原创文章 · 获赞 0 · 访问量 443

猜你喜欢

转载自blog.csdn.net/lxf2769686661/article/details/105104635