目录
一、引言
要学习和了解了bean对象管理相关的知识,才能去理解springboot自动配置的原理
(1)需学习有关如下
- Bean扫描
- Bean注册
- 注册条件
二、Bean扫描
(1)spring中
- 如果在xml配置中,可以借助标签<context:component-scan ... />来指定要扫描的包路径。
- 如果是使用配置类的方式,可以借助@ComponentScan(basePackages="...")来指定扫描的包路径
(2)springboot中
(在springboot中并没有发现书写上面的标签和注解,但是依然可以扫描到我们写的,如controller、service等等???)
- 核心就在我们的启动类的注解上:@SpringBootApplication。这个注解其实是一个组合注解!组合的另外一个注解叫:@ComponentScan。这就相当于我们在启动类上添加了一个它的注解,这就是为什么我们不需要手动添加,也能自动扫描到controller、service等等。
- 但是@ComponentScan这个注解并没有指定要扫描的包路径。如果不指定扫描的包路径,它默认扫描的添加该注解的类、以及所在的包和其子包,如下它只能扫描到启动类SpringbootQuickstartApplication所在的com.feisi.springbootquickstart这个包下的类、包。
- 如果我把controller包把它移动到其它的包下,然后想要它扫描,如何做到呢?
- 首先先不修改启动类里面的注解,直接启动
- 现在修改一下启动类里面的注解,添加注解@ComponentScan指定包扫描路径"com",因为它两个包都在com包下。再重启springboot工程即可
三、Bean扫描总结
(1)spring boot默认只能扫描启动类所在的包及其子包。其它地方扫描不到。
(2)若想要扫描其它的包,可以手动的去添加注解@ComponentScan。在实际开发中,一般都是直接写在启动类所在的包下,不会乱放