摘要
在生产环境下,我们需要关闭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");
- }
- }
到此这篇关于详解SpringBoot禁用Swagger的三种方式的文章就介绍到这了,更多相关SpringBoot禁用Swagger内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!