ComponentScan注解的使用
在项目初始化时,会将加@component,@service...相关注解的类添加到spring容器中。
但是项目需要,项目初始化时自动过滤某包下面的类,不将其添加到容器中。
有两种实现方案,
1.如果要过滤的类比较少,直接在启动类@SpringbootApplication(scanPackage="xxx.xxx.xxx")该注解上添加exclude属性,过滤某个class类
也可以这样写
注解说明
@SpringBootApplication:
scanBasePackages:扫描包路径
excludeName:过滤的类全路径
exclude:过滤的类class对象
2.如果要过滤的类较多,需要自定义Filter,并使用该Filter。
注解说明
@ComponentScan:会自动扫描包路径下面的所有@Controller、@Service、@Repository、@Component 的类
它里面的属性: value指定扫描的包,includeFilters包含那些过滤,excludeFilters不包含那些过滤,useDefaultFilters默认的过滤规则是开启的,如果我们要自定义的话是要关闭的。其中@Filters是一个过滤器的接口。
@Filters 指过滤规则,FilterType指定过滤的规则(
FilterType.ANNOTATION:按照注解
FilterType.ASSIGNABLE_TYPE:按照给定的类型;
FilterType.ASPECTJ:使用ASPECTJ表达式
FilterType.REGEX:使用正则指定
FilterType.CUSTOM:使用自定义规则)
classes指定过滤的类
如果我们在使用自定义(includeFilters = @Filter(type = FilterType.CUSTOM, classes = {自己定义的类}))过滤规则的时候,我们自己定义的类要实现TypeFilter接口,例如:
该类即表示,
当className中包含某个包名时,即当前加载类是某个包下面的类,就返回true,表示该类过滤,不放到spring容器中。
自定义TypeFilter指定@ComponentScan注解的过滤规则
最新文章
- React Native 在现有项目中的探路
- Hadoop:搭建hadoop集群
- SystemFile
- 转: pthread_create()
- Maven pom项目部署
- 笔记2 linux多线程 读写锁
- foreach循环中为什么不要进行remove/add操作
- TCP/IP入门(4) --应用层
- Linux - 延伸正则表达式
- 使用python处理地理数据:Geopandas
- 2019 年 React 学习路线图(转)
- 从零开始搭建django前后端分离项目 系列二(项目搭建)
- [C++]线性链表之顺序表<;一>;
- Windows Server 2008 R2 报错事件ID:10之WMI报错
- Oracle用分区表分区交换做历史数据迁移
- cookie和session得区别
- spring Cloud 定时任务 @Scheduled
- 用jquery实现带左右按键的轮播图
- redis 只允许指定的额内网IP访问,其余的外网IP不允许访问
- ajax请求返回Json字符串运用highcharts数据图表展现数据