- swagger2常用注解:
- https://blog.csdn.net/u014231523/article/details/76522486
- https://www.cnblogs.com/fengli9998/p/7921601.html
- 生產環境中禁用swagger:https://www.jianshu.com/p/fa3230ffb27c
Swagger是我們常用的API Doc工具,非常便於開發人員調試,后台和前端開發人員協作,以及對外公布API使用。如何在生產環境中禁止swagger了?
如何禁止Swagger,方法有很多,我們選擇最簡單實用的,也就是直接在使用@Profile注解。
項目背景介紹, 我們有三個環境dev, test, prod,我們只在dev環境中使用swagger,test和prod都禁止使用,為了體現使用不同profile效果的不同, 我們修改了配置文件中的端口。具體如下

test和prod禁用swagger。 我們只需要這樣
package com.yq.demo; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; 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") public class Swagger2 extends WebMvcConfigurationSupport { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() //為當前包路徑 .apis(RequestHandlerSelectors.basePackage("com.yq.demo.controller")) .paths(PathSelectors.any()) .build(); } //構建 api文檔的詳細信息函數,注意這里的注解引用的是哪個 private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("Spring Boot 測試使用 Swagger2 構建RESTful API") .contact(new Contact("EricYang", "https://github.com/yqbjtu/springbootJpa.git", "test@163.com")) .version("1.0") .description("User API 描述") .build(); } @Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/swagger-ui.html").addResourceLocations( "classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations( "classpath:/META-INF/resources/webjars/"); } }
開發環境,啟用Swagger
我們看看效果,如果是mvn package -P dev,這樣生成的jar包,啟動后可以看到swagger可以正常訪問。

生產環境,禁用Swagger
接下來我們看看prod環境, 首先我們使用mvc package -P prod將代碼編譯打包,然后我們使用java -jar xxxx.jar啟動.
我們新看看mvc package -P prod打包好的jar包有什么不一樣。

可以看到新打包的jar中自動將spring.profiles.active=@profileActive@中的profileActive替換為prod了。
啟動后的端口已經是8084
我們再看看swagger,以及rest是否工作正常。

可以通過RestClient正常訪問rest api,但是swagger不能顯示API。
到此為止我們在dev環境中使用swagger, 在test和prod環境中禁用swagger就已經完全實現了,具體代碼在這里,歡迎加星和fork。 謝謝!
注意事項:
如果我們使用mvn package, 默認沒有指定profile,生成的jar中application.properties文件如下
spring.profiles.active=@profileActive@ spring.http.encoding.force=true info.app.name=bootdemo info.app.version=1.0.0 server.port=8081
當你啟動的時候,系統提示沒有profile,自動選擇是用8081端口,swagger不能使用,也就是被禁用了。
作者:不1見2不3散4
鏈接:https://www.jianshu.com/p/fa3230ffb27c
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。