階段一 第一週 2-12 springboot自動裝配簡述
-
-
接下來我們看下這個註解。我們需要關注它裡面的@SpringBootConfiguration,然後有一個@EnableAutoConfiguration最後一個是@ComponentScan。注意我們當前這個Application是在com.imooc這個包下,所以當我們的容器啟動以後,它會掃描當前我們這個包下所有的類以及所有子包的類。比方說這個包下面有dao層,有service層都會被@ComponentScan掃描到。當然,我們現在加了一個@RestController在它的子包controller下面,所以它又會被我們的Application我們的容器去掃描到。
-
然後我們看下@SpringBootConfiguration,那麼可以看到它是一個介面,這個介面的主要的配置是一個@Configuration,代表了它是一個容器,是一個IOC容器,
-
另外,@EnableAutoConfiguration,它是用來開啟自動裝配的,點進去然後它裡面有個@Import,它就是用於去做匯入的,就是把一個個的@Configuration導進去,把容器導進去。然後我們需要看@Import上面的AutoConfigurationImportSelector.class,它是一個自動裝配的用於去做匯入的選擇器,既然是一個選擇器,它就有可能包含很多的內容,比如舉例子,jQuery的選擇器,可以批量選擇很多東西,在這裡是一樣的,它可以選擇很多自動裝配的類。點選這個AutoConfigurationImportSelector看看,這個類裡面有很多方法,我們看selectImports這個方法,然後方法裡面有個getAutoConfigurationEntry,這個是用於去獲得自動裝配的類。進去後,會看到有個語句得到了List configurations,那麼這個就是配置,它是放到了list裡面的。 接下來看getCandidateConfigurations這個方法, 這裡有個斷言,如果configurations為空的話,可能會報異常,重點資訊是
META-INF/spring.factories