スプリングブートアプリケーションにswaggerを接続しました。 Springブートを使用すると、所有する各環境のプロパティファイルを保持できます。実稼働環境でswaggerを無効にする方法はありますか?
Swagger構成を個別の構成クラスに配置し、@Profile
注釈を付けて注釈を付けて、特定のプロファイルでのみSpringコンテキストにスキャンされるようにします。
例:
@Configuration
@EnableSwagger2
@Profile("dev")
public class SwaggerConfig {
// your swagger configuration
}
Spring Bootアプリが動作しているプロファイルは、コマンドライン:--spring.profiles.active=dev
または設定ファイルspring.profiles.active=dev
で定義できます。
複数の環境で作業している場合は、@ Profileを配列として使用することもできます
@Configuration
@EnableSwagger2
@Profile({"dev","qa"})
public class SwaggerConfig {
// your swagger configuration
}
これは私の構成クラスです:
@Configuration
@Profile("swagger")
@EnableSwagger2
public class SwaggerConfig {
@Value("${info.build.version}")
private String buildVersion;
@Bean
public Docket documentation() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(regex("/rest/.*"))
.build()
.pathMapping("/")
.apiInfo(metadata());
}
private ApiInfo metadata() {
return new ApiInfoBuilder()
.title("API documentation of our App")
.description("Use this documentation as a reference how to interact with app's API")
.version(buildVersion)
.contact(new Contact("Dev-Team", "https://dev-website", "dev@mailbox"))
.build();
}
}
Swaggerが必要な場合はいつでも、プロファイルswagger
を環境変数SPRING_PROFILES_ACTIVE
に追加します
コード生成(Swagger2SpringBootを生成)を使用する場合:
できた.