Java Spring Swagger Startuptime Startupbehaviour - PullRequest
0 голосов
/ 30 января 2019

У меня есть приложение Springboot, где я интегрировал Swagger для создания документации REST.

При использовании swagger время запуска резко увеличивается в 5 раз. У меня 30 сек без swagger.2 мин плюс с чванством.

Кроме того, бесконечные списки, перечисленные в списке времени запуска, могут быть бесконечными!- А это не ходи.

Моя проблема - бесконечные времена запуска + Исключения относительно использования памяти из Google Guava.

Почему так?Что я делаю неправильно?Где пропущенная точка?Почему API не защищает меня от неправильных настроек?

Мне кажется, что Сваггер, с одной стороны, инструмент номер один для документирования остальных API, но его использование кажется мне очень древним.

Некоторая информация о настройке (находится в maven pom.xml):
- org.springframework.boot;весна-загрузка-стартер-родитель;1.5.5. РЕЛИЗ
- io.springfox;springfox-swagger2;2.9.2
- io.springfox;springfox-чванство-щ;2.9.2

Я где-то подобрал, что библиотеку гуавы googles нужно заменить;что я и сделал: https://github.com/springfox/springfox/issues/2616#issuecomment-412811912

Действительно ли swagger / springfox так хорошо использовать для документирования API, пришедшего из Spring?- Какие будут альтернативы для предоставления документации?

@Configuration
@EnableSwagger2
public class Swagger2UiConfiguration extends WebMvcConfigurerAdapter {
  ...
  @Bean(name="restPublicSwaggerV1Api")
  public Docket publicV1Api(BuildProperties build) {

    final ApiInfoBuilder apiInfo = new ApiInfoBuilder()
            .title(build.getName())
            .description("Description for public API")
            .version( build.getVersion() );

    final long TIME = System.currentTimeMillis();

    final Docket docket = new Docket(DocumentationType.SWAGGER_2)
            .groupName( "public-v1" )
            .apiInfo( apiInfo.build() )
            .select()
            .apis( (wmrh)->{ // springfox.documentation.spring.web.WebMvcRequestHandler

                final StringBuffer sb = new StringBuffer();
                sb.append( wmrh.getClass().getTypeName()  +"\n\t"+ wmrh );
                final RequestHandlerKey rhk = wmrh.key();

                boolean result = false;

                for( String pathMapping : rhk.getPathMappings() ) {
                    sb.append( "\n\t-> "+ pathMapping );
                    result |= pathMapping.startsWith( "/api/public/" );
                }

                sb.append( "\n\t=>> "+ result +", time: "+ Util.formatTime( System.currentTimeMillis() - TIME ) +" after start." );

                LOG.debug( sb.toString() );

                return result;
            } )
            .paths( (p)->{ return true; } )
            .build();

    LOG.debug( "instantiated: {}", docket );
    return docket;
}

1 Ответ

0 голосов
/ 30 января 2019

Попробуйте использовать последний Swagger-UI (Swagger-JS 2.1.17), как указано в

https://github.com/swagger-api/swagger-ui/issues/1919

...