日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot注解自动扫描-底层实现

發布時間:2024/10/5 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot注解自动扫描-底层实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

分析上文Spring Boot快速入門


@SpringBootApplication public class HelloWorldApplication {public static void main(String[] args) {//Spring應用啟動起來SpringApplication.run(HelloWorldApplication.class,args);} }

@SpringBootConfiguration:Spring Boot的配置類,我們點擊進去查看
我們看到28行的注解
@EnableAutoConfiguration:開啟自動配置的功能

以前我們使用三大框架時,很多東西需要自己在xml中配置,但現在Spring Boot幫我們自動配置-》就是該注解實現的
我們ctrl+右鍵點擊該注解查看

@Import({AutoConfigurationImportSelector.class})
@Import:Spring的底層注解,向容器中導入一個組件
@AutoConfigurationPackage:添加該注解的類所在的package 作為 自動配置package 進行管理
點擊@AutoConfigurationPackage注解進去查看源碼

點擊21行的Registrar.class

在該處打上斷點,在debug模式下進行源碼追蹤
選中(String[])(new AutoConfigurationPackages.PackageImports(metadata)).getPackageNames().toArray(new String[0])-》右鍵-》Evaluate expression-》Evaluate
我們發現將@SpringBootApplication標注的類的所在包及其下面所有的子包的所有組件掃描到了Spring容器中所以我們必須將Controller、service、dao等放到主配置類所在包的子包中


@Import({AutoConfigurationImportSelector.class})
AutoConfigurationImportSelector.:導入哪些組件的選擇器,將所有需要導入的組件以全類名的方式返回;這些組件就會被添加到容器中;
斷點追蹤


有了上面的自動配置類,我們就不需要再手動編寫;那么自動配置類是從哪里掃描到這些自動配置類呢

SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.getBeanClassLoader())

我們點擊loadFactoryNames查看進一步查看源碼實現方式

springboot在啟動的時候從類路徑下的META-INF/spring.factories中獲取EnableAutoConfiguration指定的值,將這些值作為自動配置類導入到容器中,自動配置類就開始生效,幫我們進行配置工作
打開我們導入的包


查看web自動配置類點擊查看源碼


我們能夠看到我們在SpringMVC中配置的很多功能,比如視圖解析器(如上圖所示)


J2EE的整體解決方案和自動配置都在spring-boot-autoconfigure-2.3.6.RELEASE.jar中
(比如我們熟悉的aop:事務,cache:緩存,dao:持久層 等等

這就是約定大于配置

總結

以上是生活随笔為你收集整理的SpringBoot注解自动扫描-底层实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。