最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot默認(rèn)包掃描機(jī)制及@ComponentScan指定掃描路徑詳解

 更新時(shí)間:2021年11月08日 10:09:31   作者:三毛村滴雪魚粉  
這篇文章主要介紹了SpringBoot默認(rèn)包掃描機(jī)制及@ComponentScan指定掃描路徑詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

SpringBoot默認(rèn)包掃描機(jī)制

標(biāo)注了@Component和@Component的衍生注解如@Controller,@Service,@Repository就可以把當(dāng)前的Bean加入到IOC容器中。那么SpringBoot是如何知道要去掃描@Component注解的呢。@ComponentScan做的事情就是告訴Spring從哪里找到bean

SpringBoot默認(rèn)包掃描機(jī)制: 從啟動(dòng)類所在包開始,掃描當(dāng)前包及其子級(jí)包下的所有文件。我們可以通過以下的測(cè)試來驗(yàn)證一下。

啟動(dòng)應(yīng)用并訪問BannerController這個(gè)控制器,目錄結(jié)構(gòu)如圖

在這里插入圖片描述

訪問結(jié)果正常

在這里插入圖片描述

當(dāng)把BannerController移動(dòng)到上一級(jí)目錄,應(yīng)用可以正常啟動(dòng)

在這里插入圖片描述

但是再次訪問剛才的路徑時(shí)卻出現(xiàn)了如下錯(cuò)誤,代碼是沒有變動(dòng)的,是Controller掃描 不到了。

在這里插入圖片描述

實(shí)際上SpringBoot是通過@ComponentScan進(jìn)行掃描。默認(rèn)情況下,入口類上面的@SpringBootApplication里面有一個(gè)@ComponentScan,也就相當(dāng)于@ComponentScan標(biāo)注在入口類上。

所以默認(rèn)情況下,掃描入口類同級(jí)及其子級(jí)包下的所有文件。當(dāng)我們想自己制定包掃描路徑就需要加一個(gè)@ComponentScan

@ComponentScan的使用

常用參數(shù)含義

  • basePackagesvalue: 用于指定包的路徑,進(jìn)行掃描(默認(rèn)參數(shù))
  • basePackageClasses: 用于指定某個(gè)類的包的路徑進(jìn)行掃描
  • includeFilters: 包含的過濾條件
  • FilterType.ANNOTATION:按照注解過濾
  • FilterType.ASSIGNABLE_TYPE:按照給定的類型
  • FilterType.ASPECTJ:使用ASPECTJ表達(dá)式
  • FilterType.REGEX:正則
  • FilterType.CUSTOM:自定義規(guī)則
  • excludeFilters: 排除的過濾條件,用法和includeFilters一樣
  • nameGenerator: bean的名稱的生成器
  • useDefaultFilters: 是否開啟對(duì)@Component,@Repository,@Service,@Controller的類進(jìn)行檢測(cè)

指定要掃描的包

上述例子,如果想掃描啟動(dòng)類上一級(jí)包,使用@ComponentScan指定包掃描路徑,即可將BannerController加入到容器

@SpringBootApplication
@ComponentScan("com.lin")
public class MissyouApplication {
    public static void main(String[] args) {
        SpringApplication.run(MissyouApplication.class, args);
    }
}

excludeFilters 排除某些包的掃描

測(cè)試類準(zhǔn)備:

@Controller
public class BannerController {
    BannerController(){
        System.out.println("Hello BannerController");
    }
}
--------------------------------------------------------------------
@Service
public class TestService {
    TestService(){
        System.out.println("Hello TestService");
    }
}

目錄結(jié)構(gòu)如下:

在這里插入圖片描述

啟動(dòng)類上加@ComponentScan指定掃描lin這個(gè)包并排除@Controller這個(gè)注解標(biāo)注的類

@SpringBootApplication
@ComponentScan(value = "com.lin",
        excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,value = {Controller.class})})
public class MissyouApplication {
    public static void main(String[] args) {
        SpringApplication.run(MissyouApplication.class, args);
    }
}

啟動(dòng)應(yīng)用,控制臺(tái)打印出了TestService而沒有BannerController

在這里插入圖片描述

@Component與@ComponentScan

在某個(gè)類上使用@Component注解,表明當(dāng)需要?jiǎng)?chuàng)建類時(shí),這個(gè)被注解標(biāo)注的類是一個(gè)候選類。就像是有同學(xué)在舉手。 @ComponentScan 用于掃描指定包下的類。就像看都有哪些舉手了。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Logback日志保存到相對(duì)路徑的操作

    使用Logback日志保存到相對(duì)路徑的操作

    這篇文章主要介紹了使用Logback日志保存到相對(duì)路徑的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Java中的六種經(jīng)典比較排序算法

    Java中的六種經(jīng)典比較排序算法

    排序算法是程序開發(fā)和計(jì)算機(jī)科學(xué)中常見的算法之一,排序算法是算法分析的重要內(nèi)容之一,因?yàn)榕判蛩惴ǖ男视绊懼绦虻男阅芎头€(wěn)定性,本文的目的是介紹常見的排序算法,并且通過代碼示例演示它們的實(shí)現(xiàn)過程,需要的朋友可以參考下
    2023-06-06
  • MyBatis limit分頁設(shè)置的實(shí)現(xiàn)

    MyBatis limit分頁設(shè)置的實(shí)現(xiàn)

    這篇文章主要介紹了MyBatis limit分頁設(shè)置的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 前端dist包放到后端springboot項(xiàng)目下一起打包圖文教程

    前端dist包放到后端springboot項(xiàng)目下一起打包圖文教程

    這篇文章主要介紹了前端dist包放到后端springboot項(xiàng)目下一起打包的相關(guān)資料,具體步驟包括前端打包、將前端文件復(fù)制到后端項(xiàng)目的static目錄、后端打包、驗(yàn)證部署成功等,需要的朋友可以參考下
    2025-01-01
  • Java超詳細(xì)講解設(shè)計(jì)模式中的命令模式

    Java超詳細(xì)講解設(shè)計(jì)模式中的命令模式

    命令模式是將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化,對(duì)請(qǐng)求排隊(duì)或者對(duì)請(qǐng)求做日志記錄,以及可以支持撤銷的操作
    2022-04-04
  • 基于spring注入為null的原因及解決方案

    基于spring注入為null的原因及解決方案

    這篇文章主要介紹了spring注入為null的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • springboot 如何重定向redirect 并隱藏參數(shù)

    springboot 如何重定向redirect 并隱藏參數(shù)

    這篇文章主要介紹了springboot 如何重定向redirect 并隱藏參數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java并發(fā) 線程間的等待與通知

    Java并發(fā) 線程間的等待與通知

    這篇文章主要介紹了Java并發(fā) 線程間的等待與通知,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • MPAndroidChart開源圖表庫(kù)的使用介紹之餅狀圖、折線圖和柱狀圖

    MPAndroidChart開源圖表庫(kù)的使用介紹之餅狀圖、折線圖和柱狀圖

    這篇文章主要介紹了MPAndroidChart開源圖表庫(kù)的使用介紹之餅狀圖、折線圖和柱狀圖的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • Spring IoC學(xué)習(xí)之ApplicationContext中refresh過程詳解

    Spring IoC學(xué)習(xí)之ApplicationContext中refresh過程詳解

    這篇文章主要給大家介紹了關(guān)于Spring IoC學(xué)習(xí)之ApplicationContext中refresh過程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評(píng)論

南召县| 巴楚县| 石首市| 镇赉县| 西藏| 区。| 寿宁县| 揭阳市| 玉树县| 习水县| 剑川县| 博白县| 微山县| 佛冈县| 新竹市| 乾安县| 金昌市| 甘孜| 怀柔区| 达孜县| 揭西县| 凉城县| 临夏县| 沐川县| 仙居县| 新营市| 瑞昌市| 石嘴山市| 桦川县| 新化县| 浏阳市| 文山县| 兴国县| 甘洛县| 涿州市| 公主岭市| 犍为县| 峨眉山市| 天峻县| 民乐县| 上高县|