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.

Другие вопросы по тегам