Springboot 自動化裝配的原理
SpringBoot 主要作用為:起步依賴、自動裝配。而為了實現這種功能,SpringBoot 底層主要使用了 @SpringBootApplication
注解。
首先,@SpringBootApplication
是一個復合注解,它結合了 @Configuration
、@EnableAutoConfiguration
和 @ComponentScan
三個注解的功能。這個注解通常被用在主啟動類上,用于開啟 SpringBoot 的自動配置和組件掃描。
@Configuration
:表示@SpringBootApplication
即為引導類同樣也為配置類;@ComponentScan
:讓 SpringBoot 自動掃描當前包及其子包中的@Component
、@Repository
、@Service
、@Controller
等能識別的注解的類,并將它們注冊為 Bean。@EnableAutoConfiguration
:自動裝配的核心注解,底層是一個@Import
注解,會導入一個 AutoConfigurationImportSelector 這個配置類,會自動執行 selectImports 方法,最終會去調用 SpringFactoriesLoader.loadFactoryNames 方法,去掃描 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件中所有信息,加載進內存封裝成一個數組,最后會根據各種條件(起步依賴、@Conditional
相關注解)進行過濾,找到匹配條件的全類名,并封裝成字符串數組到內存中。再調用 run 方法時,通過反射創建對象并交給 Spring 容器管理。