SpringBoot的默认包扫描路径

Posted 小志的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot的默认包扫描路径相关的知识,希望对你有一定的参考价值。

一、SpringBoot如何读取到我们的配置类

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

二、SpringBoot默认的包扫描路径

  • SpringbootTestApplication上唯一注解@SpringBootApplication为出发点,来探究其实现原理。

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

  • 再进入到@EnableAutoConfiguration注解中,发现引入了一个名为@EAutoConfigurationPackages的注解。

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

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

  • 在debug的结果中,我们发现了默认包路径。其实,SpringBoot就是将SpringbootTestApplication类(即:xxxApplication)所在的package及其子包都注册到IOC中。指定了默认的包加载规则。

以上是关于SpringBoot的默认包扫描路径的主要内容,如果未能解决你的问题,请参考以下文章

springboot配置mapper扫描采坑

SpringBoot 中@Autowired 注入失效原因及解决方法

springboot指定注解扫描范围

spring boot增加@ComponentScan后就扫描不到其他包了

springboot获取jar包路径

项目中遇到的问题00000--springboot扫描Controller问题