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容器中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2020-03-29 守护线程与普通线程
2020-03-29 Java中实现多线程的两种方式之间的区别
2020-03-29 单链表
2020-03-29 双向链表——Java实现
2020-03-29 Java实现单链表的增删查改及逆置打印
2020-03-29 二叉树——Java实现
2020-03-29 常见排序——Java实现