Подтвердить что ты не робот

Как отключить swagger-ui в производстве

У меня есть swagger, подключенный к моему приложению загрузки spring. spring boot позволяет вам иметь файлы свойств для каждой среды, которая у вас есть. Есть ли способ отключить swagger для производственной среды?

4b9b3361

Ответ 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.

Прочитайте этот раздел Spring Загрузочные документы для получения дополнительной информации о @Profile

Ответ 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):

  1. Напишите свой собственный Swagger2SpringBoot (с битом @Profile) и найдите его в том же пути пакета, что и автоматически сгенерированный.
  2. Отредактируйте swagger-codegen-maven-plugin, чтобы поместить сгенерированный в src/main/java (который перезапишет ваш собственный в пункте 1).
  3. Отредактируйте .swagger-codegen-ignore, чтобы не перезаписывать ваш Swagger2SpringBoot
  4. Обратите внимание, что другие вещи также будут перезаписаны, например. pom.xml и application.properties. Просто добавьте их в .swagger-codegen-ignore.

Готово.