前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试题52:SpringBoot的默认包扫描路径是什么?

面试题52:SpringBoot的默认包扫描路径是什么?

作者头像
爪哇缪斯
发布2023-05-09 21:45:39
6320
发布2023-05-09 21:45:39
举报
文章被收录于专栏:爪哇缪斯

SpringBoot其实不仅仅给我们提供了便捷的自动配置和基于场景的Starter,也提供了我们其实并不能够“直观发现”的默认包扫描路径。

如果我们需要配置,之前是Spring应用中,我们会为项目创建基于配置的xml或者properties配置文件,但是现在,我们可以通过@Configuration注解来标注在我们的配置类上,然后以类编码的方式去实现我们需要的配置信息。这种好处也是不言而喻的,如果在项目开发过程中,对于配置文件管理不善,加之历史遗留下来的已经失效的配置文件(很多开发人员对于无用配置一般也不会进行清理,尤其第一任开发者并不是自己的前提下),就会出现一大堆“脏、乱、差”的配置文件。

而现在我们通过配置类的方式,将配置信息以类的方式去实现,彻底抛弃了之前的类与配置文件并存的情况。当然,也是需要合理的项目管理的,否则,什么样的技术手段,项目都会乱七八糟。

那我们把话题拉回来,当我们编写配置类的时候,我们发现,并没有指定我们的配置类所在的位置,那么SpringBoot就可以读取到我们的配置类。那这是怎么做到的呢?原因就是,在SpringBoot框架的源码中,已经提供了默认的包扫描路径,当然,也是支持我们通过application.yaml或者application.properties去做定制化修改(可以通过@ComponentScan或者scanBasePackages参数)。那默认的路径又是什么呢?基于这个问题,我们来去源码中寻找到答案。


我们通过SpringbootDemoApplication上唯一注解@SpringBootApplication为出发点,来探究其实现原理。

进入@SpringBootApplication的实现代码后,有一个注解引起了我们的注意。

再进入到@AutoConfigurationPackage注解中,发现引入了一个名为AutoConfigurationPackages的注册类。

里面有关于包引用的逻辑处理,我们debug来看一下。

在debug的结果中,我们发现了默认包路径。

其实,SpringBoot就是将SpringbootDemoApplication类(即:xxxApplication)所在的package及其子包都注册到IOC中。指定了默认的包加载规则。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爪哇缪斯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
项目管理
CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档