Выбор ответа Middle Spring Boot и автоконфигурация спрашивают часто обновлено

Свой бин и автоконфигурация

Вопрос

Вы объявили свой бин ObjectMapper. Что сделает JacksonAutoConfiguration?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Не создаст свой: его бин помечен @ConditionalOnMissingBean. Автоконфигурации обрабатываются после пользовательских конфигураций, а их бины помечены @ConditionalOnMissingBean: если подходящий бин уже есть, дефолтный не создаётся.

Варианты ответа

  1. Создаст второй ObjectMapper, и старт упадёт из-за неоднозначности
  2. Перезапишет ваш бин своим, потому что автоконфигурация идёт позже
  3. Не создаст свой: его бин помечен @ConditionalOnMissingBeanправильный ответ
  4. Объединит настройки обоих маперов в один бин с @Primary

Разбор

Автоконфигурации обрабатываются после пользовательских конфигураций, а их бины помечены @ConditionalOnMissingBean: если подходящий бин уже есть, дефолтный не создаётся. Так Boot позволяет переопределить любую часть. Обратная сторона: с вашим бином пропадают и настройки, которые Boot применял к своему (модули, свойства spring.jackson.*), поэтому чаще настраивают через Jackson2ObjectMapperBuilderCustomizer.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме