У меня есть приложение 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;
}