Swagger 3.0.0: невозможно отключить в производственной среде без SwaggerConfig и @Profile
Я обновляюсь до SpringFox Swagger 3.0.0 с 2.x, в котором представлен стартер Spring Boot
springfox-boot-starter
зависимость, которая устраняет необходимость в основанной на 2.x
SwaggerConfig
:
/**
* NO LONGER NEEDED
*/
@Configuration
@EnableSwagger2
@Profile({"local", "dev", "beta"}) // <- HOW TO DISABLE IN PROD INSTEAD OF THIS
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
Теперь, когда мне это больше не нужно
@Configuration
, что позволяет мне указывать профили среды в
@Profile
и, следовательно, отключить Swagger в производственной среде, как мне отключить Swagger в производственной среде в SpringFox Swagger-UI 3.x?
ПРИМЕЧАНИЕ. Здесь обсуждается подход на основе Spring Security: Spring Disable Swagger-ui для производства - это может быть вариантом для некоторых, но не подходит для этого сценария по двум причинам:
- Мое приложение не использует Spring Security, и невозможно включить
spring-boot-security-starter
зависимость - Требуется занести в белый список все остальные конечные точки, чтобы они снова заработали, что неприемлемо.
1 ответ
Ответ было нелегко найти, и он НЕ был в руководстве по миграции SpringFox или документации здесь (где он должен быть): http://springfox.github.io/springfox/docs/current/
ПРАВИЛЬНЫЙ и, безусловно, лучший ответ для Swagger UI 3.0.0 здесь: /questions/20390403/kak-polnostyu-otklyuchit-swagger-ui-v-spring-boot-swagger-uihtml-dolzhen-vernut-404/56820745#56820745.
Просто добавь
springfox.documentation.enabled=[true|false]
в файл application.properties или application.yml целевой среды.
Кроме того, было бы неплохо увидеть раздел со списком всех доступных свойств Spring Boot, перечисленных в документе SpringFox.