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

Как Spring Boot настраивает приложение сам

Вопрос

Вы добавили зависимость spring-boot-starter-data-jpa и указали URL базы, и всё заработало. Объясните, что произошло.

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

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

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

Коротко

Стартер data-jpa принёс в classpath Hibernate, Spring Data JPA, HikariCP и JDBC с совместимыми версиями. При старте @EnableAutoConfiguration прочитал список классов автоконфигурации из файлов AutoConfiguration.imports во всех jar-ах.

Что должно прозвучать в ответе

  • Стартер принёс Hibernate, Spring Data, HikariCP с согласованными версиями

  • @EnableAutoConfiguration загрузил классы из AutoConfiguration.imports

  • Условия @ConditionalOnClass сработали на классы в classpath

  • DataSource, EntityManagerFactory, TransactionManager созданы с @ConditionalOnMissingBean

  • Свойства spring.datasource.* связаны через @ConfigurationProperties

  • Свой бин отключает дефолтный, отчёт условий через --debug

Что могут спросить следом

  • Как отключить одну автоконфигурацию?
  • Как написать свой стартер?

Разбор

Стартер data-jpa принёс в classpath Hibernate, Spring Data JPA, HikariCP и JDBC с совместимыми версиями. При старте @EnableAutoConfiguration прочитал список классов автоконфигурации из файлов AutoConfiguration.imports во всех jar-ах. Классы проверили условия: есть DataSource и Hikari в classpath, значит DataSourceAutoConfiguration создаёт пул, свойства spring.datasource.* связываются через ConfigurationProperties. Дальше HibernateJpaAutoConfiguration создаёт EntityManagerFactory и JpaTransactionManager, а автоконфигурация репозиториев находит интерфейсы-репозитории. Все эти бины под @ConditionalOnMissingBean, поэтому если я объявлю свой DataSource, Boot свой не создаст. Что сработало и почему, видно в отчёте условий при запуске с --debug. Отключить конкретную автоконфигурацию можно через exclude.

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

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

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