batch normalization的原理和作用_springboot自动配置原理
配置文件能配置的屬性參照https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/#common-application-properties
1、自動配置原理:
1)SpringBoot啟動的時候加載主配置類,開啟了自動配置功能@EnableAutoConfiguration
2)@EnableAutoConfiguration 作用:
利用EnableAutoConfigurationImportSelector給容器中導入一些組件
可以查看selectImports()方法的內容;
List configurations = getCandidateConfigurations(annotationMetadata, attributes);
獲取候選的配置
SpringFactoriesLoader將 類路徑下 META-INF/spring.factories 里面配置的所有EnableAutoConfiguration的值加入到了容中;
#每一個這樣的 xxxAutoConfiguration類都是容器中的一個組件,都加入到容器中;用他們來做自動配置;
3)、每一個自動配置類進行自動配置功能;
4)、以HttpEncodingAutoConfiguration(Http編碼自動配置)為例解釋自動配置原理;
@Configuration根據當前不同的條件判斷,決定這個配置類是否生效?
一但這個配置類生效;這個配置類就會給容器中添加各種組件;這些組件的屬性是從對應的properties類中獲取的,這些類里面的每一個屬性又是和配置文件綁定的;
5)、所有在配置文件中能配置的屬性都是在xxxxProperties類中封裝者‘;配置文件能配置什么就可以參照某個功能對應的這個屬性類
@ConfigurationProperties(prefix = "spring.http.encoding") //從配置文件中獲取指定的值和bean的屬
性進行綁定
public1)SpringBoot啟動會加載大量的自動配置類
2)我們看我們需要的功能有沒有SpringBoot默認寫好的自動配置類;
3)我們再來看這個自動配置類中到底配置了哪些組件;(只要我們要用的組件有,我們就不需要再來配置了)
4)給容器中自動配置類添加組件的時候,會從properties類中獲取某些屬性。我們就可以在配置文件中指定這些屬性的值;
xxxxAutoConfigurartion:自動配置類;
給容器中添加組xxxxProperties:封裝配置文件中相關屬性
2、細節
2.1@Conditional派生注解(Spring注解版原生的@Conditional作用)
作用:必須是@Conditional指定的條件成立,才給容器中添加組件,配置配里面的所有內容才生效
自動配置類必須在一定的條件下才能生效;
我們怎么知道哪些自動配置類生效; 我們可以通過啟用 debug=true屬性;來讓控制臺打印自動配置報告,這樣我們就可以很方便的知道哪些自動配置 類生效;
========================= AUTO‐CONFIGURATION REPORT ========================= Positive matches:(自動配置類啟用的) ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ DispatcherServletAutoConfiguration matched:‐ @ConditionalOnClass found required class 'org.springframework.web.servlet.DispatcherServlet'; @ConditionalOnMissingClass did not find unwanted class (OnClassCondition) ‐ @ConditionalOnWebApplication (required) found StandardServletEnvironment (OnWebApplicationCondition) Negative matches:(沒有啟動,沒有匹配成功的自動配置類) ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ActiveMQAutoConfiguration: Did not match: ‐ @ConditionalOnClass did not find required classes 'javax.jms.ConnectionFactory', 'org.apache.activemq.ActiveMQConnectionFactory' (OnClassCondition) AopAutoConfiguration: Did not match: ‐ @ConditionalOnClass did not find required classes 'org.aspectj.lang.annotation.Aspect', 'org.aspectj.lang.reflect.Advice' (OnClassCondition)總結
以上是生活随笔為你收集整理的batch normalization的原理和作用_springboot自动配置原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nginx转发图片请求变成html/te
- 下一篇: 03系统多界面_云卡通2.0系统全新界面