Процесс запуска Spring Boot и принцип автоматической настройки

Spring Boot

Java-программисты должны знать, что каждый Spring Boot имеет класс запуска, и запуск Spring Boot заключается в выполнении основного метода класса. Как показано на рисунке ниже, метод SpringApplication.run выполняется в основном методе.

20191122202613.png

начать процесс

Сначала подведите итоги процесса запуска Spring Boot.

  • SpringApplication.run выполняет двухэтапные операции, сначала инкапсулирует экземпляр SpringApplication, а затем выполняет перегруженный метод запуска экземпляра.
  • Когда SpringApplication инкапсулирует экземпляр, он считывает все файлы в пути к классам.MTEA-INF/spring.factoriesApplicationContextInitializer (инициализатор контейнера) файла конфигурации xml и ApplicationContextListener (слушатель) инкапсулируют их в экземпляр SpringApplication.
  • Выполнить метод запуска экземпляра SpringApplication
  • Контейнер AnnotationConfigApplicationContext конфигурации Annotation инициализируется по умолчанию в методе запуска.
  • Выполните начальный метод ApplicationContextInitializer выше.
  • Затем загрузите бобы в контейнер.

Автоматическая настройка Spring Boot

Мы знаем, что после импорта пакета jar, необходимого для разработки с использованием координат Maven, также вступят в силу некоторые конфигурации по умолчанию. Итак, как Spring Boot настраивает значения по умолчанию для этих пакетов jar? Ответ кроется в аннотации @SpringBootApplication к классу запуска Spring Boot.

Spring Boot启动类

@SpringBootApplication в основном состоит из трех аннотаций:@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan

@SpringBootApplication

@EnableAutoConfigurationНижний слой состоит из двух аннотаций,@AutoConfigurationPackage,@Import(AutoConfigurationImportSelector.class)

@EnableAutoConfiguration

@Import(AutoConfigurationImportSelector.class)Секрет автоматической конфигурации здесь.Этот класс импортирует множество классов автоматической конфигурации.После отладки вы можете обнаружить, что он читает путь к классам.META-INF/spring.factoriesкласс автоконфигурации под

自动配置类

Класс автоконфигурации выглядит следующим образом:

自动配置类

Суммировать

Spring Boot считывает путь к классам через @EnableAutoConfiguration в @SpringBootApplication в основном классе запуска.META-INF/spring.factoriesКлассы конфигурации EnableAutoConfiguration перечислены ниже, но эти классы конфигурации используют @ConditionalOnClass, и для активации конфигурации должны быть выполнены определенные условия.Эти классы конфигурации записывают конфигурацию по умолчанию.