Ich habe Swagger an meine Spring Boot-Anwendung angeschlossen. Spring Boot ermöglicht es Ihnen, Eigenschaftsdateien für jede Umgebung zu haben, die Sie haben. Gibt es eine Möglichkeit, Swagger für eine Produktionsumgebung zu deaktivieren?
Platzieren Sie Ihre Swagger-Konfiguration in einer separaten Konfigurationsklasse und kommentieren Sie sie mit @Profile
annotation ->, sodass sie nur in bestimmten Profilen in den Spring-Kontext gescannt wird.
Beispiel:
@Configuration
@EnableSwagger2
@Profile("dev")
public class SwaggerConfig {
// your swagger configuration
}
Sie können dann ein Profil definieren, in dem Ihre Spring Boot-App über die Befehlszeile ausgeführt wird: --spring.profiles.active=dev
oder über die Konfigurationsdatei: spring.profiles.active=dev
.
In diesem Abschnitt der Spring Boot-Dokumente finden Sie weitere Informationen zu @Profile
.
Wenn Sie in mehreren Umgebungen arbeiten, können Sie auch @Profile als Array verwenden
@Configuration
@EnableSwagger2
@Profile({"dev","qa"})
public class SwaggerConfig {
// your swagger configuration
}
Dies ist meine Konfigurationsklasse:
@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", "[email protected]"))
.build();
}
}
Wo immer ich Swagger brauche, füge ich der Umgebungsvariable SPRING_PROFILES_ACTIVE
das Profil swagger
hinzu.
Für diejenigen, die den Code gen verwenden (der Swagger2SpringBoot generiert):
Getan.