SpringBoot默認(rèn)包掃描機(jī)制與默認(rèn)配置文件詳解
一、SpringBoot默認(rèn)包掃描機(jī)制 - 示例
默認(rèn)情況下,掃描啟動(dòng)類(lèi)同級(jí)及其子級(jí)包下的所有文件。我們可以通過(guò)以下的測(cè)試來(lái)驗(yàn)證一下。
1. 當(dāng)BannerController放在啟動(dòng)類(lèi)的,程序運(yùn)行成功
2. 當(dāng)BannerController移動(dòng)到上一級(jí)目錄,不在啟動(dòng)類(lèi)的包及其子包下,程序運(yùn)行失敗
二、SpringBoot默認(rèn)掃描包機(jī)制 - 原理
實(shí)際上SpringBoot啟動(dòng)類(lèi)上面的@SpringBootApplication
里面有一個(gè)@ComponentScan
,它可以?huà)呙鑶?dòng)類(lèi)同級(jí)及其子級(jí)包下的所有文件,并且把帶有@Component
、@Repository
、@Service
、@Controller
的類(lèi)注冊(cè)到Spring容器。
三、SpringBoot手動(dòng)掃描包機(jī)制 - 原理&示例
正如上述所說(shuō)的,SpringBoot默認(rèn)掃描包機(jī)制是因?yàn)橐呀?jīng)在@ComponentScan
指定掃描啟動(dòng)類(lèi)同級(jí)及其子級(jí)包下的所有文件,當(dāng)我要被掃描的文件不在啟動(dòng)類(lèi)同級(jí)及其子級(jí)包下,那么我們可以通過(guò)在啟動(dòng)類(lèi)頭上加上@ComponentScan()來(lái)指定我們要掃描的包。
四、@ComponentScan與@MapperScan
@Component
、@Repository
、@Service
、@Controller
、@ComponentScan
是Spring注解所以@ComponentScan只能掃描@Component、@Repository、@Service、@Controller
@Mapper
、@MapperScan
是Mybatis注解所以@MapperScan只能掃描@Mapper
所以要是在Mapper層要是使用了@Mapper注解,那么SpringBoot的@ComponentScan是掃描不到的,必須在啟動(dòng)類(lèi)上面加上@MapperScan掃描。
五、SpringBoot默認(rèn)配置文件
當(dāng)我們構(gòu)建完Spring Boot項(xiàng)目后,會(huì)在resources目錄下給我們一個(gè)默認(rèn)的全局配置文件 application.properties,這是一個(gè)空文件,因?yàn)镾pring Boot在底層已經(jīng)把配置都給我們自動(dòng)配置好了,當(dāng)在配置文件進(jìn)行配置時(shí),會(huì)修改SpringBoot自動(dòng)配置的默認(rèn)值。
配置文件名是固定的
application.properties
但我們可以修改為
application.yml
這兩個(gè)文件本質(zhì)是一樣的,區(qū)別只是其中的語(yǔ)法略微不同。
到此這篇關(guān)于SpringBoot默認(rèn)包掃描機(jī)制與默認(rèn)配置文件詳解的文章就介紹到這了,更多相關(guān)SpringBoot默認(rèn)包掃描與默認(rèn)配置文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot默認(rèn)包掃描機(jī)制及@ComponentScan指定掃描路徑詳解
- SpringBoot整合RabbitMQ實(shí)現(xiàn)消息確認(rèn)機(jī)制
- SpringBoot整合spring-retry實(shí)現(xiàn)接口請(qǐng)求重試機(jī)制及注意事項(xiàng)
- SpringBoot通知機(jī)制的實(shí)現(xiàn)方式
- SpringBoot + WebSocket 實(shí)現(xiàn)答題對(duì)戰(zhàn)匹配機(jī)制案例詳解
- SpringBoot全局異常處理機(jī)制和配置攔截器方式
- Springboot核心機(jī)制詳細(xì)介紹
相關(guān)文章
springboot執(zhí)行延時(shí)任務(wù)之DelayQueue實(shí)例
這篇文章主要介紹了springboot執(zhí)行延時(shí)任務(wù)之DelayQueue實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02IDEA設(shè)置JVM可分配內(nèi)存大小和其他參數(shù)的教程
這篇文章主要介紹了IDEA設(shè)置JVM可分配內(nèi)存大小和其他參數(shù)的教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01Java線(xiàn)程通信及線(xiàn)程虛假喚醒知識(shí)總結(jié)
今天給大家?guī)?lái)的是關(guān)于Java線(xiàn)程的相關(guān)知識(shí),文章圍繞著Java線(xiàn)程通信及線(xiàn)程虛假喚醒的知識(shí)展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06解決get請(qǐng)求入?yún)NotNull驗(yàn)證不生效問(wèn)題
這篇文章主要介紹了解決get請(qǐng)求入?yún)NotNull驗(yàn)證不生效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09JAVASE精密邏輯控制過(guò)程詳解(分支和循環(huán)語(yǔ)句)
在一個(gè)程序執(zhí)行的過(guò)程中各條語(yǔ)句的執(zhí)行順序?qū)Τ绦虻慕Y(jié)果是有直接影響的,這篇文章主要給大家介紹了關(guān)于JAVASE精密邏輯控制(分支和循環(huán)語(yǔ)句)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04mybatis返回的map結(jié)果如何設(shè)置有序
這篇文章主要介紹了mybatis返回的map結(jié)果如何設(shè)置有序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01Java笛卡爾積算法原理與實(shí)現(xiàn)方法詳解
這篇文章主要介紹了Java笛卡爾積算法原理與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了笛卡爾積算法的原理及java定義與使用笛卡爾積算法的相關(guān)操作技巧,需要的朋友可以參考下2017-12-12