生産環境でSwaggerを無効にする方法
7195 ワード
SpringMVC統合springfox-swagger 2とspringfox-swagger-uiは簡単で、2ステップしかかかりません.
(1)pomに依存を追加
転載は出典を明記してください.http://blog.csdn.net/goldenfish1919/article/details/78280051
しかし、これらのapiドキュメントを本番環境で無効にするにはどうすればいいのでしょうか.いろいろな方法を試して、最終的に簡単な実用的な方法を見つけました.
もっといい方法があるはずだ.
参照先:http://blog.csdn.net/w4hechuan2009/article/details/68892718
swaggerはspringmvcと同じcontextでなければなりません.springmvcはspringのサブcontextにすぎません.swaggerがspringのcontextをロードすると、swaggerのurl用springmvcのブロッキングはブロックできません!
2つの解決策があります
注釈を使用する場合:
(1)spring-mvcの構成:
(2)springの構成:
(3)Swaggerの構成:
もちろん、xml構成を使用する方法は、swaggerの依存パッケージを導入する必要がないため、より推奨されます.
(1)spring-mvcの構成:
spring-mvc-swagger.xml:
注意:ここではswaggerを1つのプロファイルに単独で配置します.オンライン環境であれば、ファイルの内容は空で、オフラインテスト環境であれば、Swaggerを構成します.
(2)springの構成:
(3)Swaggerの構成:
注意:ここでは@Configurationを削除するとともに、pomを変更し、マルチprofileパッケージを構成します.
pom.xml:
異なるprofileでswaggerの依存に異なるscopeを設定します!
注意:springfox-swagger.version=2.7.0バグがあり、低バージョン2.6.1を使用できます.ひどい穴だ!
完璧!
(1)pomに依存を追加
io.springfox
springfox-swagger-ui
${springfox-swagger.version}
io.springfox
springfox-swagger2
${springfox-swagger.version}
(2)Swaggerの構成クラスを追加:@Configuration
@EnableSwagger2
@EnableWebMvc
@ComponentScan("com.XXX.controller")
public class SwaggerConfig{
}
でhttp://localhost/swagger-ui.htmlプロジェクト内のすべてのインタフェース情報が表示され、http://localhost/v2/api-docsjsonデータが表示されます.転載は出典を明記してください.http://blog.csdn.net/goldenfish1919/article/details/78280051
しかし、これらのapiドキュメントを本番環境で無効にするにはどうすればいいのでしょうか.いろいろな方法を試して、最終的に簡単な実用的な方法を見つけました.
@Configuration
@EnableSwagger2
@EnableWebMvc
@ComponentScan("com.XXX.controller")
public class SwaggerConfig{
@Autowired
ConfigService configService;
@Bean
public Docket customDocket() {
if(configService.getServerEnv() == ServerEnvEnum.ONLINE) {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfoOnline())
.select()
.paths(PathSelectors.none())// , ,
.build();
}else {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo());
}
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("XXX ")
.description("XXX ")
.license("")
.licenseUrl("")
.termsOfServiceUrl("")
.version("1.0.0")
.contact(new Contact("","", ""))
.build();
}
private ApiInfo apiInfoOnline() {
return new ApiInfoBuilder()
.title("")
.description("")
.license("")
.licenseUrl("")
.termsOfServiceUrl("")
.version("")
.contact(new Contact("","", ""))
.build();
}
}
現在http://localhost/swagger-ui.htmlこのページはまだアクセスできますが、それは何も見えません.http://localhost/v2/api-docs同じです.もっといい方法があるはずだ.
参照先:http://blog.csdn.net/w4hechuan2009/article/details/68892718
swaggerはspringmvcと同じcontextでなければなりません.springmvcはspringのサブcontextにすぎません.swaggerがspringのcontextをロードすると、swaggerのurl用springmvcのブロッキングはブロックできません!
2つの解決策があります
注釈を使用する場合:
(1)spring-mvcの構成:
swaggerの構成を追加することに注意してください.同時に:(2)springの構成:
swaggerを排除することに注意(3)Swaggerの構成:
@Configuration
@EnableSwagger2
@EnableWebMvc
@ComponentScan("com.inspur.eyun.yunbx.controller")
public class SwaggerConfig{
}
注意@Configuration注記.もちろん、xml構成を使用する方法は、swaggerの依存パッケージを導入する必要がないため、より推奨されます.
(1)spring-mvcの構成:
spring-mvc-swagger.xml:
SpringMVC Swagger Configuration
注意:ここではswaggerを1つのプロファイルに単独で配置します.オンライン環境であれば、ファイルの内容は空で、オフラインテスト環境であれば、Swaggerを構成します.
(2)springの構成:
(3)Swaggerの構成:
@EnableSwagger2
@EnableWebMvc
public class SwaggerConfig{
@Bean
public Docket customDocket() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.inspur.eyun.yunbx.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("XXX ")
.description("XXX ")
.license("")
.licenseUrl("")
.termsOfServiceUrl("")
.version("1.0.0")
.contact(new Contact("","", ""))
.build();
}
}
注意:ここでは@Configurationを削除するとともに、pomを変更し、マルチprofileパッケージを構成します.
pom.xml:
io.springfox
springfox-swagger2
${springfox-swagger.version}
${swagger.scope}
io.springfox
springfox-swagger-ui
${swagger.scope}
${springfox-swagger-ui.version}
注意:ここで依存するscopeは動的に設定されており、オンライン環境であればscopeをprovidedに設定すればよい.
dev
dev
compile
true
test
test
compile
online
online
provided
異なるprofileでswaggerの依存に異なるscopeを設定します!
注意:springfox-swagger.version=2.7.0バグがあり、低バージョン2.6.1を使用できます.ひどい穴だ!
完璧!