电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

詳解SpringBoot啟動類的掃描注解的用法及沖突原則

瀏覽:3日期:2023-04-10 11:10:46

背景

SpringBoot 啟動類上,配置掃描包路徑有三種方式,最近看到一個應用上三種注解都用上了,代碼如下:

@SpringBootApplication(scanBasePackages ={'a','b'})@ComponentScan(basePackages = {'a','b','c'})@MapperScan({'XXX'})public class XXApplication extends SpringBootServletInitializer }

那么,疑問來了:SpringBoot 中,這三種注解生效優先級如何、第一種和第二種有沒有區別呢?本文來整理下這三個注解的注意事項。

SpringBootApplication 注解

這是 SpringBoot 的注解,本質是三個 Spring 注解的和

@Configuration @EnableAutoConfiguration @ComponentScan

它默認掃描啟動類所在包及其所有子包, 但是不包括第三方的 jar 包的其他目錄 ,通過 scanBasePackages 屬性可以重新設置掃描包路徑。

注意:如果我們需要掃描依賴 jar 包中的注解,而依賴包的路徑跟不包含在 SpringBoot 啟動類路徑中的話,我們就要單獨使用 @ComponentScan 注解掃描第三方包。同時必須指定本工程的掃描路徑, 因為一旦有這個注解后,它優先,默認掃描包就失效了

例如這個工程:

詳解SpringBoot啟動類的掃描注解的用法及沖突原則

SpringBoot 啟動類的工程目錄為 cn.com.a.b ,引用的第三方公共包 xxx.common.jar 的目錄也是 cn.com.a.b ,那么第三方 jar 包中的注解天然能直接被掃描到。其他的 jar 包中,如果有注解,就無法掃描到了。

ComponentScan注解

這個是 Spring 框架的注解,它用來指定組件掃描路徑,如果用這個注解,它的值必須包含整個工程中全部需要掃描的路徑。因為它會覆蓋 SpringBootApplication 的默認掃描路徑,導致其失效。

失效表現有兩種:

第一,如果 ComponentScan 只包括一個值且就是默認啟動類目錄, SpringBootApplication 生效, ComponentScan 注解失效,報錯:

詳解SpringBoot啟動類的掃描注解的用法及沖突原則

第二,如果 ComponentScan 指定多個具體子目錄,此時 SpringBootApplication 會失效,Spring 只會掃描 ComponentScan 指定目錄下的注解。如果恰好有目錄外的 Controller 類,很遺憾,這些控制器將無法訪問。

回到開頭那段代碼:

@SpringBootApplication(scanBasePackages ={})@ComponentScan(basePackages = {})

這里指定了 ComponentScan 注解后, scanBasePackages 就失效了。因此,如果 ComponentScan 的 basePackages 值不包括 cn.com.a.b 即啟動類所在的包,僅指定了第三方 jar 的目錄,那么 這個工程下任何的注解都無法被掃描到

MapperScan 注解

這個是 MyBatis 的注解,會將指定目錄下所有 DAO 類封裝成 MyBatis 的 BaseMapper 類,然后注入 Spring 容器中, 不需要額外的注解 ,就可以完成注入。

啟示錄

SpringBoot 包掃描路徑,兩個注解的沖突行為,我反復驗證了好久確定了現象,但是沒有找到合理的解釋。這篇文章在草稿箱醞釀了快兩周了,一直擱置著。

今天搜到了一篇文章,說二者同時使用時, SpringBootApplication 會失效,至此 SpringBoot 掃描路徑的疑惑終于消除了。

到此這篇關于詳解SpringBoot啟動類的掃描注解的用法及沖突原則的文章就介紹到這了,更多相關SpringBoot啟動類掃描注解內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 液氮罐_液氮容器_自增压液氮罐-北京君方科仪科技发展有限公司 | 东莞工厂厂房装修_无尘车间施工_钢结构工程安装-广东集景建筑装饰设计工程有限公司 | 铁盒_铁罐_马口铁盒_马口铁罐_铁盒生产厂家-广州博新制罐 | 金联宇电缆|广东金联宇电缆厂家_广东金联宇电缆实业有限公司 | 渗透仪-直剪仪-三轴仪|苏州昱创百科 | 钢化玻璃膜|手机钢化膜|钢化膜厂家|手机保护膜-【东莞市大象电子科技有限公司】 | 亮化工程,亮化设计,城市亮化工程,亮化资质合作,长沙亮化照明,杰奥思【官网】 | 知企服务-企业综合服务(ZiKeys.com)-品优低价、种类齐全、过程管理透明、速度快捷高效、放心服务,知企专家! | 振动筛,震动筛,圆形振动筛,振动筛价格,振动筛厂家-新乡巨宝机电 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 | 水平垂直燃烧试验仪-灼热丝试验仪-漏电起痕试验仪-针焰试验仪-塑料材料燃烧检测设备-IP防水试验机 | 皮带机_移动皮带机_大倾角皮带机_皮带机厂家 - 新乡市国盛机械设备有限公司 | 合肥风管加工厂-安徽螺旋/不锈钢风管-通风管道加工厂家-安徽风之范 | 政府园区专业委托招商平台_助力企业选址项目快速落地_东方龙商务集团 | 电动葫芦|环链电动葫芦-北京凌鹰名优起重葫芦 | 【灵硕展览集团】展台展会设计_展览会展台搭建_展览展示设计一站式服务公司 | 固诺家居-全屋定制十大品牌_整体衣柜木门橱柜招商加盟 | 钢丝绳探伤仪-钢丝绳检测仪-钢丝绳探伤设备-洛阳泰斯特探伤技术有限公司 | 无负压供水设备,消防稳压供水设备-淄博创辉供水设备有限公司 | 缠膜机|缠绕包装机|无纺布包装机-济南达伦特机械设备有限公司 | 螺杆式冷水机-低温冷水机厂家-冷冻机-风冷式-水冷式冷水机-上海祝松机械有限公司 | 圆窗水平仪|伊莉莎冈特elesa+ganter | _网名词典_网名大全_qq网名_情侣网名_个性网名 | 衬塑设备,衬四氟设备,衬氟设备-淄博鲲鹏防腐设备有限公司 | 400电话_400电话申请_866元/年_【400电话官方业务办理】-俏号网 3dmax渲染-效果图渲染-影视动画渲染-北京快渲科技有限公司 | 紫外线老化试验箱_uv紫外线老化试验箱价格|型号|厂家-正航仪器设备 | 真空冷冻干燥机_国产冻干机_冷冻干燥机_北京四环冻干 | 香港新时代国际美容美发化妆美甲培训学校-26年培训经验,值得信赖! | 萃取箱-萃取槽-PVC萃取箱厂家-混合澄清槽- 杭州南方化工设备 | 气动调节阀,电动调节阀,自力式压力调节阀,切断阀「厂家」-浙江利沃夫自控阀门 | 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 苏州教学设备-化工教学设备-环境工程教学模型|同科教仪 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 石家庄小程序开发_小程序开发公司_APP开发_网站制作-石家庄乘航网络科技有限公司 | 流水线电子称-钰恒-上下限报警电子秤-上海宿衡实业有限公司 | 蒸压釜-陶粒板隔墙板蒸压釜-山东鑫泰鑫智能装备有限公司 | Honsberg流量计-Greisinger真空表-气压计-上海欧臻机电设备有限公司 | 东莞市超赞电子科技有限公司 全系列直插/贴片铝电解电容,电解电容,电容器 | 精密机械零件加工_CNC加工_精密加工_数控车床加工_精密机械加工_机械零部件加工厂 | 磨煤机配件-高铬辊套-高铬衬板-立磨辊套-盐山县宏润电力设备有限公司 |