软件编程
位置:首页>> 软件编程>> java编程>> 详解SpringBoot禁用Swagger的三种方式

详解SpringBoot禁用Swagger的三种方式

作者:Sunny_Chen  发布时间:2022-02-28 23:49:08 

标签:SpringBoot,禁用,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 sunny chen
* @version V1.0
* @Package com.dc.config
* @date 2018/1/16 17:33
* @Description: 主要用途:开启在线接口文档和添加相关配置
*/
@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("陈永佳 chen867647213@163.com", "", "https://blog.csdn.net/Mrs_chens"))
               .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 sunny chen
* @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("陈永佳 chen867647213@163.com", "", "https://blog.csdn.net/Mrs_chens"))
               .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 sunny chen
* @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("陈永佳 chen867647213@163.com", "", "https://blog.csdn.net/Mrs_chens"))
               .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://juejin.cn/post/7012779158849716261

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com