У меня есть swagger, подключенный к моему приложению загрузки spring. spring boot позволяет вам иметь файлы свойств для каждой среды, которая у вас есть. Есть ли способ отключить swagger для производственной среды?
Как отключить swagger-ui в производстве
Ответ 1
Поместите свою конфигурацию swagger в отдельный класс конфигурации и аннотируйте ее с помощью @Profile
annotation → , чтобы она была отсканирована в контексте Spring только в определенных профилях.
Пример:
@Configuration
@EnableSwagger2
@Profile("dev")
public class SwaggerConfig {
// your swagger configuration
}
Вы можете определить профиль, в котором ваше приложение Spring Boot работает в командной строке: --spring.profiles.active=dev
или через конфигурационный файл: spring.profiles.active=dev
.
Ответ 2
Если вы работаете в нескольких средах, вы также можете использовать @Profile в качестве массива
@Configuration
@EnableSwagger2
@Profile({"dev","qa"})
public class SwaggerConfig {
// your swagger configuration
}
Ответ 3
Это мой класс конфигурации:
@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 API")
.version(buildVersion)
.contact(new Contact("Dev-Team", "https://dev-website", "[email protected]"))
.build();
}
}
В тех случаях, когда мне нужен Swagger, я добавляю профиль swagger
к переменной окружения SPRING_PROFILES_ACTIVE
Ответ 4
Для тех, кто использует код gen (который генерирует Swagger2SpringBoot):
- Напишите свой собственный Swagger2SpringBoot (с битом @Profile) и найдите его в том же пути пакета, что и автоматически сгенерированный.
- Отредактируйте swagger-codegen-maven-plugin, чтобы поместить сгенерированный в src/main/java (который перезапишет ваш собственный в пункте 1).
- Отредактируйте .swagger-codegen-ignore, чтобы не перезаписывать ваш Swagger2SpringBoot
- Обратите внимание, что другие вещи также будут перезаписаны, например. pom.xml и application.properties. Просто добавьте их в .swagger-codegen-ignore.
Готово.