在项目初始化时,会将加@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容器中。

用例

@ComponentScan扫描包

自定义TypeFilter指定@ComponentScan注解的过滤规则

过滤规则FilterType详解

正则表达式排除包扫描

最新文章

  1. React Native 在现有项目中的探路
  2. Hadoop:搭建hadoop集群
  3. SystemFile
  4. 转: pthread_create()
  5. Maven pom项目部署
  6. 笔记2 linux多线程 读写锁
  7. foreach循环中为什么不要进行remove/add操作
  8. TCP/IP入门(4) --应用层
  9. Linux - 延伸正则表达式
  10. 使用python处理地理数据:Geopandas
  11. 2019 年 React 学习路线图(转)
  12. 从零开始搭建django前后端分离项目 系列二(项目搭建)
  13. [C++]线性链表之顺序表<一>
  14. Windows Server 2008 R2 报错事件ID:10之WMI报错
  15. Oracle用分区表分区交换做历史数据迁移
  16. cookie和session得区别
  17. spring Cloud 定时任务 @Scheduled
  18. 用jquery实现带左右按键的轮播图
  19. redis 只允许指定的额内网IP访问,其余的外网IP不允许访问
  20. ajax请求返回Json字符串运用highcharts数据图表展现数据

热门文章

  1. 基于 OSPF 路由的邻居邻接关系发现实践
  2. 【linux命令】 磁盘管理
  3. 为什么Hashtab的大小通常取远离2^n 的素数
  4. HTML 简单介绍
  5. dart系列之:dart语言中的异常
  6. Mac下Shell脚本使用学习笔记(二)
  7. Linux基础三:用户和组
  8. 「3dmax」快速配置3DMax
  9. 正则表达式&&Java文本复杂操作
  10. [bzoj1635]最高的牛