У нас есть проект SpringBoot, и мы используем Springfox Swagger для создания документации API.
Есть класс ответа, который содержит:
private Collection<Instant> quartzScheduledDates;
Когда я запускаю SwaggerUI, я получаю это сообщение:
Errors Resolver error at paths./subscriptions/{subscriptionIdStr}.get.responses.200.schema.properties.quartzScheduledDates.items.$ref Could not resolve reference because of: Could not resolve pointer: /definitions/Instant does not exist in document
Мы используем Springfox Swagger 2.9.2, SpringBoot 2.1.2-RELEASE.
Я также пытался использовать трюк Docket в springfox, как показано в Документация Спрингфокс:
docket.directModelSubstitute(Instant.class, java.util.Date.class);
Безуспешно - то же сообщение об ошибке.
Что я делаю неправильно?




Я смог воспроизвести эту проблему.

Это можно решить, определив новый AlternateTypeRules при создании Docket для вашего SWAGGER.
Ниже приведен фрагмент.
Docket docket= new Docket(DocumentationType.SWAGGER_2)
.alternateTypeRules( AlternateTypeRules.newRule(
typeResolver.resolve(Collection.class, Instant.class),
typeResolver.resolve(Collection.class, Date.class), Ordered.HIGHEST_PRECEDENCE))
.select()
.apis(RequestHandlerSelectors.basePackage("com.test"))
.paths(PathSelectors.any())
.build();
Спасибо :) @VladDinulescu
в моем случае работало для List<LocalDate>: TypeResolver typeResolver = new TypeResolver(); return new Docket(DocumentationType.SWAGGER_2) .alternateTypeRules(AlternateTypeRules.newRule(//моя модель List<LocalDate> typeResolver.resolve(List.class, LocalDate.class), // альтернатива для определения JSON typeResolver.resolve(List.class, String.class), Ordered.HIGHEST_PRECEDENCE)) ...
Тип typeResolver — com.fasterxml.classmate.TypeResolver.
В моем случае я должен был быть очень конкретным. Я имел:
TreeSet<ZonedDateTime>
Затем мне пришлось специально добавить:
AlternateTypeRules.newRule(
typeResolver.resolve(TreeSet.class, ZonedDateTime.class),
typeResolver.resolve(TreeSet.class, Date.class), Ordered.HIGHEST_PRECEDENCE))
НЕТ работал с родительским интерфейсом, таким как: Collection, Set и т. д. в typeResolver. (Кстати, TypeResolver — это @AutoWired, если вам интересно, откуда он взялся. См. документы: https://springfox.github.io/springfox/docs/current/)
Ваш ответ не должен быть проблемой (я только что проверил). Опубликуйте свою конечную точку и ее конфигурацию или, что еще лучше, создайте Минимальный, полный и проверяемый пример