Вопрос проверяет понимание условной конфигурации в Spring Boot и механизмов автоконфигурации.
@ConditionalOnMissingBean указывает Spring создавать бин только если в контексте ещё нет бина нужного типа. Аннотация активно используется в автоконфигурациях Spring Boot. Она позволяет переопределять стандартные бины своими реализациями. Это делает конфигурацию гибкой и расширяемой без изменения фреймворка.
@ConditionalOnMissingBean — это условие, при котором бин регистрируется только при отсутствии другого подходящего бина в контексте.
Основной сценарий — Spring Boot autoconfiguration:
фреймворк предлагает бин «по умолчанию»
разработчик может объявить свой бин
стандартный бин не будет создан
@Bean
@ConditionalOnMissingBean
public ObjectMapper objectMapper() {
return new ObjectMapper();
}
Если разработчик объявит свой ObjectMapper, этот бин:
не будет создан
не приведёт к конфликту
Аннотация может проверять:
тип бина
имя бина
аннотацию
@ConditionalOnMissingBean(name = "dataSource")
упрощает расширение фреймворка
устраняет необходимость отключать автоконфигурации
поддерживает принцип «разумные значения по умолчанию»
@ConditionalOnMissingBean — ключевой инструмент Spring Boot, позволяющий безопасно переопределять стандартные бины и управлять автоконфигурацией.