SpringBoot默認(rèn)包掃描機(jī)制與默認(rèn)配置文件詳解
一、SpringBoot默認(rèn)包掃描機(jī)制 - 示例
默認(rèn)情況下,掃描啟動(dòng)類同級(jí)及其子級(jí)包下的所有文件。我們可以通過(guò)以下的測(cè)試來(lái)驗(yàn)證一下。
1. 當(dāng)BannerController放在啟動(dòng)類的,程序運(yùn)行成功

2. 當(dāng)BannerController移動(dòng)到上一級(jí)目錄,不在啟動(dòng)類的包及其子包下,程序運(yùn)行失敗

二、SpringBoot默認(rèn)掃描包機(jī)制 - 原理
實(shí)際上SpringBoot啟動(dòng)類上面的@SpringBootApplication里面有一個(gè)@ComponentScan,它可以掃描啟動(dòng)類同級(jí)及其子級(jí)包下的所有文件,并且把帶有@Component、@Repository、@Service、@Controller的類注冊(cè)到Spring容器。
三、SpringBoot手動(dòng)掃描包機(jī)制 - 原理&示例
正如上述所說(shuō)的,SpringBoot默認(rèn)掃描包機(jī)制是因?yàn)橐呀?jīng)在@ComponentScan指定掃描啟動(dòng)類同級(jí)及其子級(jí)包下的所有文件,當(dāng)我要被掃描的文件不在啟動(dòng)類同級(jí)及其子級(jí)包下,那么我們可以通過(guò)在啟動(dòng)類頭上加上@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)類上面加上@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)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Jenkins 實(shí)現(xiàn)Gitlab事件自動(dòng)觸發(fā)Jenkins構(gòu)建及釘釘消息推送
這篇文章主要介紹了Jenkins 實(shí)現(xiàn)Gitlab事件自動(dòng)觸發(fā)Jenkins構(gòu)建及釘釘消息推送,應(yīng)該會(huì)對(duì)大家學(xué)習(xí)Jenkins有所啟發(fā)2021-04-04
解析Spring RestTemplate必須搭配MultiValueMap的理由
本文給大家介紹Spring RestTemplate必須搭配MultiValueMap的理由,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-11-11
Java實(shí)現(xiàn)郵箱發(fā)送功能實(shí)例(阿里云郵箱推送)
這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)郵箱發(fā)送功能的相關(guān)資料,利用阿里云郵箱推送,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Spring Boot 中PageHelper 插件使用配置思路詳解
這篇文章主要介紹了Spring Boot 中PageHelper 插件使用配置及實(shí)現(xiàn)思路,通過(guò)引入myabtis和pagehelper依賴,在yml中配置mybatis掃描和實(shí)體類,具體實(shí)現(xiàn)方法跟隨小編一起看看吧2021-08-08
StreamAPI多次消費(fèi)一個(gè)stream代碼實(shí)例
這篇文章主要介紹了StreamAPI多次消費(fèi)一個(gè)stream代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
SpringMVC?RESTFul實(shí)戰(zhàn)案例訪問(wèn)首頁(yè)
這篇文章主要為大家介紹了SpringMVC?RESTFul實(shí)戰(zhàn)案例訪問(wèn)首頁(yè),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
SpringBoot登錄判斷過(guò)程代碼實(shí)例
這篇文章主要介紹了SpringBoot登錄判斷代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
Java 詳解循環(huán)屏障CyclicBarrier如何實(shí)現(xiàn)多線程分段等待執(zhí)行完成
CyclicBarrier是一個(gè)同步工具類,可以翻譯成循環(huán)屏障,也叫障礙器或同步屏障。CyclicBarrier內(nèi)部有一個(gè)計(jì)數(shù)器count,調(diào)用障礙器的await方法會(huì)使計(jì)數(shù)器count的值減一,當(dāng)計(jì)數(shù)器count的值為0時(shí),表明調(diào)用了await方法線程已經(jīng)達(dá)到了設(shè)置的數(shù)量2021-11-11

