Не найдено описание для классов с пользовательским ObjectMapper Jackson

Я сталкиваюсь с проблемой с Spring AutoRest Docs. Кажется, это происходит из этого кода

.alwaysDo<DefaultMockMvcBuilder>(JacksonResultHandlers.prepareJackson(objectMapper))

Полная конфигурация:

    mockMvc = MockMvcBuilders
        .webAppContextSetup(webApplicationContext)
        .alwaysDo<DefaultMockMvcBuilder>(JacksonResultHandlers.prepareJackson(objectMapper))
        .alwaysDo<DefaultMockMvcBuilder>(document("{class-name}/{method-name}",
            Preprocessors.preprocessRequest(Preprocessors.prettyPrint()),
            Preprocessors.preprocessResponse(Preprocessors.prettyPrint())))
        .apply<DefaultMockMvcBuilder>(documentationConfiguration(this.restDocumentation)
            .uris()
            .withScheme("https")
            .withHost("localhost")
            .and().snippets()
            .withDefaults(CliDocumentation.curlRequest(),
                HttpDocumentation.httpRequest(),
                HttpDocumentation.httpResponse(),
                AutoDocumentation.requestFields()
                    .failOnUndocumentedFields(true),
                AutoDocumentation.responseFields()
                    .failOnUndocumentedFields(true),
                AutoDocumentation.pathParameters(),
                AutoDocumentation.requestParameters(),
                AutoDocumentation.description(),
                AutoDocumentation.methodAndPath(),
                AutoDocumentation.section(),
                AutoDocumentation.links()))
        .build()

Я немного настроил джексон, и авторесту это, похоже, не нравится. Когда я ввожу свой objectMapper, я получаю следующие предупреждения:

No Javadoc found for class java.lang.Object

No Javadoc found for class java.io.Serializable

No description found for constraint com.domain.CLASS: Can't find resource for bundle java.util.PropertyResourceBundle, key com.domain.CLASS.description

Я пытался ввести другие способы доступа к объектному картографу, включая

MappingJackson2HttpMessageConverter
ObjectMapperResolver

Я также попытался запустить новое приложение Spring Boot и не обнаружил ошибок. Однако, если prepareJackson удалить, предупреждений больше не будет, в автоматически сгенерированных документах нет данных.

Я застрял в этой проблеме довольно долгое время и не знаю, как ее решить. Мы будем очень признательны за любые рекомендации.

Первые два предупреждения говорят о том, что для двух классов в вашем проекте нет Javadoc. Это ожидаемо, поскольку эти классы являются частью стандартной библиотеки, а не вашего проекта. Последнее предупреждение говорит о том, что нет описания ограничения CLASS. Ничто из этого не указывает на какие-либо проблемы с ObjectMapper. Как выглядят ваши тесты? Вы выполнили шаги в scacap.github.io/spring-auto-restdocs/#gettingstarted-usage ?

Florian Benz 13.06.2019 14:22

Правильно, я выполнил эти шаги, и на всех моих классах/контроллерах есть Javadocs. Я также заметил, что с 2.0.5 -> 2.0.3 исчезает сообщение «Нет описания для сообщения об ограничении» для классов немного... Сегодня я попытаюсь создать демонстрационный проект и отвечу здесь.

tjb 13.06.2019 16:58

Я видел такое же поведение сегодня после обновления auto-restdocs в проекте с 1.0.10 до 2.0.5. Я заметил, что классы, содержащиеся в предупреждениях, не являются классами ограничений (аннотаций). Вместо этого они являются модельными классами. На первый взгляд это выглядит как небольшая ошибка в spring-auto-restdocs или я что-то пропустил?

Josef Reichardt 18.06.2019 11:41

@FlorianBenz, вы также можете найти эти предупреждения в своем журнале travis: travis-ci.org/ScaCap/spring-auto-restdocs/jobs/544592362#L23‌​67

Josef Reichardt 19.06.2019 11:29

Я рад, что я не один это вижу! Это заставляет мои тесты длиться вечно. @FlorianBenz есть новости по этому поводу?

tjb 19.06.2019 21:00

Я посмотрю и посмотрю, печатаем ли мы ненужные предупреждения. У нас всегда были предупреждения об отсутствии Javadoc. Предупреждения либо означают, что Javadoc не найден, либо что в настройках что-то не так. Во многих случаях Javadoc либо отсутствует преднамеренно, либо не извлекается, потому что это сторонний код. Я понимаю, что это может ввести в заблуждение и раздражать. Возможные решения: 1) изменить уровень журнала на информацию или 2) вообще не регистрировать это. @TylerBobella Вы действительно уверены, что печать предупреждений замедляет ваш тест?

Florian Benz 22.06.2019 19:39

Это действительно тот случай, когда в последнем выпуске больше предупреждений «Описание ограничения не найдено». Я создал задачу и начал PR github.com/ScaCap/spring-auto-restdocs/issues/336

Florian Benz 23.06.2019 11:03
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
0
7
218
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Быстрое обновление по этому поводу.

Флориан написал об этом на GitHub, и в версии 2.0.6 все исправлено. Так что просто используйте 2.0.6, и все будет хорошо.

См. https://github.com/ScaCap/spring-auto-restdocs/issues/336

Спасибо Флориану и команде Auto Rest Doc!

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

Похожие вопросы

Автоматическая перенастройка Spring Boot не работает на spring-boot-data-starter-jdbc
Использование системной переменной в application.properties Spring Boot
Создание и импорт пользовательской библиотеки Spring с разделением общих зависимостей
Как решить исключение NullPointerException при использовании компонента Autowiring в приложении spring-boot
Разделение сервера авторизации OAuth2 и сервера ресурсов
Как передать два параметра в шаблон тимелеафа?
Использовать RestTemplate с объектом в качестве данных и типом контента application/x-www-form-urlencoded?
Сохранение уже запущенных контейнеров прослушивателя и откат в случае сбоя новой настройки
При весенней загрузке, если не удается вставить данные после проверки того, существует ли эта пара данных в таблице, вставка произойдет, если эта пара не существует
Angular 6 + Spring Boot: ошибка: «из источника« http://localhost: 4200 »был заблокирован политикой CORS»