自动配置原理精讲||@Conditional ||怎么知道哪些自动配置类生效? 启用debug=true属性(在配置文件配置);
自動配置原理精講
派生注解
配置文件怎么配置
server.port
spring.config.location=”D://application.properties”
https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/#common-application-properties
https://docs.spring.io/spring-boot/docs/2.2.2.RELEASE/reference/htmlsingle/#common-application-properties
?
自動配置原理精講
? ?查看AutoConfigurationImportSelector.class
? ? ? ? ? ??
進入getCandidateConfigurations()
進入loadFactoryNames ()
?
進入loadSpringFactories ()
?
總結?
- SpringBoot啟動會加載大量的自動配置類
- 我們看我們需要的功能有沒有SpringBoot默認寫好的自動配置類;
- 我們再來看這個自動配置類中到底配置了哪些組件;(只要我們要用的組件有,我們就不需要再來配置了)
- 給容器中自動配置類添加組件的時候,會從properties類中獲取某些屬性。我們就可以在配置文件中指定這些屬性的值;
????- xxxxAutoConfigurartion:自動配置類;給容器中添加組件
????- xxxxProperties:封裝配置文件中的默認配置
@Conditional派生注解
@ConditionalOnJava 系統的java版本是否符合要求
@ConditionalOnBean 容器中存在指定Bean;
@ConditionalOnMissingBean 容器中不存在指定Bean;
@ConditionalOnExpression 滿足SpEL表達式指定
@ConditionalOnClass 系統中有指定的類
@ConditionalOnMissingClass 系統中沒有指定的類
@ConditionalOnSingleCandidate 容器中只有一個指定的Bean,或者這個Bean是首選Bean
@ConditionalOnProperty 系統中指定的屬性是否有指定的值
@ConditionalOnResource 類路徑下是否存在指定資源文件
@ConditionalOnWebApplication 當前是web環境
@ConditionalOnNotWebApplication 當前不是web環境
@ConditionalOnJndi JNDI存在指定項
所有的條件配置之間的關系是并且的關系
我們怎么知道哪些自動配置類生效?
我們可以通過啟用debug=true屬性(在配置文件配置);
來讓控制臺打印自動配置報告,這樣我們就可以很方便的知道哪些自動配置類生效;
?
總結
以上是生活随笔為你收集整理的自动配置原理精讲||@Conditional ||怎么知道哪些自动配置类生效? 启用debug=true属性(在配置文件配置);的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 配置文件加载优先级和外部配置文件加载||
- 下一篇: web静态资源访问规则||webjars