Java-программисты должны знать, что каждый Spring Boot имеет класс запуска, и запуск Spring Boot заключается в выполнении основного метода класса. Как показано на рисунке ниже, метод SpringApplication.run выполняется в основном методе.
начать процесс
Сначала подведите итоги процесса запуска Spring Boot.
- SpringApplication.run выполняет двухэтапные операции, сначала инкапсулирует экземпляр SpringApplication, а затем выполняет перегруженный метод запуска экземпляра.
- Когда SpringApplication инкапсулирует экземпляр, он считывает все файлы в пути к классам.
MTEA-INF/spring.factories
ApplicationContextInitializer (инициализатор контейнера) файла конфигурации xml и ApplicationContextListener (слушатель) инкапсулируют их в экземпляр SpringApplication. - Выполнить метод запуска экземпляра SpringApplication
- Контейнер AnnotationConfigApplicationContext конфигурации Annotation инициализируется по умолчанию в методе запуска.
- Выполните начальный метод ApplicationContextInitializer выше.
- Затем загрузите бобы в контейнер.
Автоматическая настройка Spring Boot
Мы знаем, что после импорта пакета jar, необходимого для разработки с использованием координат Maven, также вступят в силу некоторые конфигурации по умолчанию. Итак, как Spring Boot настраивает значения по умолчанию для этих пакетов jar? Ответ кроется в аннотации @SpringBootApplication к классу запуска Spring Boot.
@SpringBootApplication в основном состоит из трех аннотаций:@SpringBootConfiguration
,@EnableAutoConfiguration
,@ComponentScan
@EnableAutoConfiguration
Нижний слой состоит из двух аннотаций,@AutoConfigurationPackage
,@Import(AutoConfigurationImportSelector.class)
@Import(AutoConfigurationImportSelector.class)
Секрет автоматической конфигурации здесь.Этот класс импортирует множество классов автоматической конфигурации.После отладки вы можете обнаружить, что он читает путь к классам.META-INF/spring.factories
класс автоконфигурации под
Класс автоконфигурации выглядит следующим образом:
Суммировать
Spring Boot считывает путь к классам через @EnableAutoConfiguration в @SpringBootApplication в основном классе запуска.META-INF/spring.factories
Классы конфигурации EnableAutoConfiguration перечислены ниже, но эти классы конфигурации используют @ConditionalOnClass, и для активации конфигурации должны быть выполнены определенные условия.Эти классы конфигурации записывают конфигурацию по умолчанию.