J'ai swagger branché à mon application de démarrage de printemps. Spring Boot vous permet d’avoir des fichiers de propriétés pour chaque environnement que vous possédez. Existe-t-il un moyen de désactiver swagger pour un environnement de production?
Placez votre configuration swagger dans une classe de configuration séparée et annotez-la avec l'annotation @Profile
-> afin qu'elle soit analysée dans le contexte Spring uniquement dans certains profils.
Exemple:
@Configuration
@EnableSwagger2
@Profile("dev")
public class SwaggerConfig {
// your swagger configuration
}
Vous pouvez définir le profil de votre application Spring Boot via la ligne de commande: --spring.profiles.active=dev
ou via le fichier de configuration: spring.profiles.active=dev
.
Lisez cette section de la documentation d'amorçage Spring pour plus d'informations sur @Profile
Si vous travaillez sur plusieurs environnements, vous pouvez également utiliser @Profile as array
@Configuration
@EnableSwagger2
@Profile({"dev","qa"})
public class SwaggerConfig {
// your swagger configuration
}
Ceci est ma classe de 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();
}
}
Partout où j'ai besoin de Swagger, j'ajoute le profil swagger
à la variable d'environnement SPRING_PROFILES_ACTIVE