日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

前言

我們早期在做Spring項目的時候,需要手動添加很多xml配置,比如整合SpringMVC的配置,開啟事務,整合MyBatis等等。這些都需要我們手動編寫大量的配置,簡直就是配置地獄。

Spring官方也發現了這一個痛點,后面SpringBoot橫空出世,解決了這一痛點。SpringBoot基于約定大于配置的理念,根據我們在依賴中的starter,自動的為我們把一些必要的組件裝配到IOC容器中,并且這些組件在SpringBoot中基本上都有默認的配置,所以SpringBoot項目在啟動的時候才可以為我們自動裝配組件。

舉個例子:比如我們要在項目中引入redis相關的組件,我們只需要在項目中加入一個Redis相關的starter即可。

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-redis</artifactId>

</dependency>

只需要引入這個依賴,我們在項目中就可以使用RedisTemplate 來操作Redis了,不用做任何配置。

因為SpringBoot會默認連接 127.0.0.1:6379 這個服務,當然前提是我們本機啟動了Redis服務。這個就是SpringBoot的默認配置,也就是約定。

一、SpringBoot自動裝配過程解析

1.1源碼分析

SpringBoot項目的啟動類上都會有@SpringBootApplication注解,這個注解是一個復合注解。

重點是@EnableAutoConfiguration這個注解,這個注解也是一個復合注解。

@EnableAutoConfiguration注解導入AutoConfigurationImportSelector類,這個類中有一個selectImports()方法。

selectImports(),方法調用了getAutoConfigurationEntry()方法,這個方法里面又有一個關鍵的方法getCandidateConfigurations()

getCandidateConfigurations()方法借助SpringFactoriesLoader.loadFactoryNames()方法,掃描了所有包含META-INF/spring.factories的jar包,這些jar包實際上就是我們引入的starter中的依賴。

在loadFactoryNames()方法中加載spring.factories文件。

1.2Debug驗證

getCandidateConfigurations()的第一行打上斷點,然后debug模式啟動SpringBoot項目。

我們發現 configurations集合中存儲了許多全類名,這些就是SpringBoot幫我們把依賴中的相關的組件裝配到了IOC容器中。

比如我們項目中添加了注冊中心nacos相關的依賴,可以看到nacos依賴的庫中META-INF文件夾中有spring.factories文件,這個文件中定義了一些必要的組件全類名,SpringBoot根據這些就可以利用JAVA的反射機制為我們創建出這些對象,然后放到IOC容器中。

總結

SpringBoot自動裝配原理:

  1. @EnableAutoConfiguration注解導入AutoConfigurationImportSelector類。
  2. selectImports方法調用SpringFactoriesLoader.loadFactoryNames()掃描所有jar下面的對應的META-INF/spring.factories文件.
  3. 把所有在spring.factories文件中掃描到的全類名進行實例化加載到IOC容器中。

SpringBoot自動裝配說白了就是自動幫我們把第三方的組件裝配到IOC容器,不需要再手動的去寫Bean相關的配置,因為大多數配置SpringBoot已經幫我們約定好了,也就是約定大于配置的理念。

分享到:
標簽:SpringBoot
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定