SpringBoot默认包扫描机制与默认配置文件详解
作者:后端漫漫
一、SpringBoot默认包扫描机制 - 示例
默认情况下,扫描启动类同级及其子级包下的所有文件。我们可以通过以下的测试来验证一下。
1. 当BannerController放在启动类的,程序运行成功
2. 当BannerController移动到上一级目录,不在启动类的包及其子包下,程序运行失败
二、SpringBoot默认扫描包机制 - 原理
实际上SpringBoot启动类上面的@SpringBootApplication
里面有一个@ComponentScan
,它可以扫描启动类同级及其子级包下的所有文件,并且把带有@Component
、@Repository
、@Service
、@Controller
的类注册到Spring容器。
三、SpringBoot手动扫描包机制 - 原理&示例
正如上述所说的,SpringBoot默认扫描包机制是因为已经在@ComponentScan
指定扫描启动类同级及其子级包下的所有文件,当我要被扫描的文件不在启动类同级及其子级包下,那么我们可以通过在启动类头上加上@ComponentScan()来指定我们要扫描的包。
四、@ComponentScan与@MapperScan
@Component
、@Repository
、@Service
、@Controller
、@ComponentScan
是Spring注解所以@ComponentScan只能扫描@Component、@Repository、@Service、@Controller
@Mapper
、@MapperScan
是Mybatis注解所以@MapperScan只能扫描@Mapper
所以要是在Mapper层要是使用了@Mapper注解,那么SpringBoot的@ComponentScan是扫描不到的,必须在启动类上面加上@MapperScan扫描。
五、SpringBoot默认配置文件
当我们构建完Spring Boot项目后,会在resources目录下给我们一个默认的全局配置文件 application.properties,这是一个空文件,因为Spring Boot在底层已经把配置都给我们自动配置好了,当在配置文件进行配置时,会修改SpringBoot自动配置的默认值。
配置文件名是固定的
application.properties
但我们可以修改为
application.yml
这两个文件本质是一样的,区别只是其中的语法略微不同。
到此这篇关于SpringBoot默认包扫描机制与默认配置文件详解的文章就介绍到这了,更多相关SpringBoot默认包扫描与默认配置文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!