前言
上节文章我们已经了解了IoC
批量装配Bean
的知识。大家感兴趣的话,可参考
SpringBoot(14) — IoC装配Bean
在SpringBoot
的IoC
操作中,我们经常会用到注解@ComponentScan
,这是一个扫描策略
注解。那么,今天我们就来学习下@ComponentScan
的详细使用吧。
今天涉及知识有:
- 整体理解
- basePackages
- basePackageClasses
- includeFilters & excludeFilters
- @Filter 中多个属性使用时的写法
- 装配
Bean
的使用
来波运行结果图:
======我是测试啊=====
======student=====Student(id=1, name=小明同学, age=12)
一. 整体理解
针对以下项目结构:

上面我们已经知道当
@ComponentScan
注解在StudentConfig
类头部的情况下,则Student
必须放置在config/
文件夹下才行。但实际开发过程中,我们希望Student
可放置的地方更加灵活。由于@ComponentScan
默认扫描的是config/
文件夹下所有被@Component
注解的类,但我在该文件夹下有些被@Component
注解的类不想被IoC
装配怎么办。下面就来具体讲解。@ComponentScan
有以下几个常用属性:
- basePackages:定义扫描包名
- basePackageClasses:定义扫描类名
- includeFilters: 满足过滤器条件的
Bean
才能被扫描 - excludeFilters:排除滤器条件的
Bean
被扫描,即满足该过滤条件的Bean
不被扫描
其中includeFilters
和excludeFilters
的定义都需要借助@ComponentScan.Filter
来完成相应的扫描规则。下面对这个几个常用属性一 一 讲解。
二. basePackages
定义扫描包名。basePackages
接收的是字符串数组。以上面讲到的config/config_entity/Student
路径为例。若需要扫描config/
文件夹下所有装配Bean
,我们可以这样定义 @ComponentScan
:
网友评论