以WebMvcAutoConfiguration自動配置的原理為例,SpringBoot內部對大量的第三方庫或Spring內部庫進行了預設配置,這些配置是否生效,取決於我們是否引入了對應庫所需的依賴,如果有那麼預設配置就會生效。如果引入springboot-starter-web那麼對應的web配置 ...
以WebMvcAutoConfiguration自動配置的原理為例,SpringBoot內部對大量的第三方庫或Spring內部庫進行了預設配置,這些配置是否生效,取決於我們是否引入了對應庫所需的依賴,如果有那麼預設配置就會生效。如果引入springboot-starter-web那麼對應的web配置就會自動配置。那麼是如何自動配置的呢?
我們找到對應的源碼來看下:
先找到對應的自動配置的jar包
然後在org下-->找到web-->找到servlet-->找到裝載配置類和對應的屬性配置
我們點擊WebMvcAutoConfiguration配置類看進去
通過源碼可以看到:@Configuration
:聲明這個類是一個配置類。
條件註解(Conditional Annotation):Spring Boot提供了一系列的條件註解,如@ConditionalOnClass
、@ConditionalOnMissingBean
、@ConditionalOnProperty
等。(就是在某個條件下,滿足項目的是什麼類型)
(查源碼)自動配置類(Auto-Configuration Class):自動配置類使用條件註解來標記自己的生效條件,併在滿足條件時進行自動配置。每個自動配置類通常都對應一個特定的功能模塊或庫,並聲明需要自動配置的Bean。對於一個web程式來說,類中還定義了視圖解析器、處理器適配器(HandlerAdapter)
對於類中的這些屬性,@EnableAutoConfiguration註解引入了兩個屬性:WebMvcProperties和ResourceProperties,點擊源碼查看屬性類,裡面有內部資源視圖解析器的prefix和suffix屬性等靜態文件資源。
SpringBoot為我們提供了預設配置,而預設配置生效的條件,我們也可以自己配置,那麼就會覆蓋預設配置。