【sprinb-boot】@ComponentScan 跳过扫描 excludeFilters
@ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = {Controller.class, RestController.class}))
前言
- springboot 2.0.0.RELEASE
- maven 3.5.0
自动扫描
默认扫描 @SpringBootApplication 类所在目录及子目录。
跳过扫描
@ComponentScan 搭配 excludeFilters
示例:
@ComponentScan(excludeFilters = @Filter(FilterType.ANNOTATION, classes = Controller.class))
- 1
参考:https://docs.spring.io/spring-boot/docs/2.0.0.RELEASE/api/index.html?org/springframework/boot/context/TypeExcludeFilter.html
FilterType
public enum FilterType {
	/**
	 * Filter candidates marked with a given annotation.
	 * @see org.springframework.core.type.filter.AnnotationTypeFilter
	 */
	ANNOTATION,
	/**
	 * Filter candidates assignable to a given type.
	 * @see org.springframework.core.type.filter.AssignableTypeFilter
	 */
	ASSIGNABLE_TYPE,
	/**
	 * Filter candidates matching a given AspectJ type pattern expression.
	 * @see org.springframework.core.type.filter.AspectJTypeFilter
	 */
	ASPECTJ,
	/**
	 * Filter candidates matching a given regex pattern.
	 * @see org.springframework.core.type.filter.RegexPatternTypeFilter
	 */
	REGEX,
	/** Filter candidates using a given custom
	 * {@link org.springframework.core.type.filter.TypeFilter} implementation.
	 */
	CUSTOM
}
FilterType.ANNOTATION 按注解类型排除
@SpringBootApplication
@ComponentScan(excludeFilters = @Filter(FilterType.ANNOTATION, classes = Controller.class))
public class Application {
	public static void main(String[] args) throws IOException {
		SpringApplication.run(Application.class, args);
	}
	@Bean
    public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
        return args -> {
        	System.out.println("startup done.");
        };
    }
}
FilterType.REGEX 正则表示达
@SpringBootApplication
@ComponentScan(excludeFilters = @Filter(type = FilterType.REGEX, pattern = {"net.sayyy.db.*"}))
public class Application {
	public static void main(String[] args) throws IOException {
		SpringApplication.run(Application.class, args);
	}
	@Bean
    public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
        return args -> {
        	System.out.println("startup done.");
        };
    }
}
FilterType.CUSTOM 自定义规则
@SpringBootApplication
@ComponentScan(excludeFilters = @Filter(type = FilterType.CUSTOM, classes = MyCustomerFilter.class))
public class Application {
	public static void main(String[] args) throws IOException {
		SpringApplication.run(Application.class, args);
	}
	@Bean
    public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
        return args -> {
        	System.out.println("startup done.");
        };
    }
}
自定义过滤规则是需要实现 TypeFilter 接口
自定义扫描规则, 匹配类名中带有 Service 的类
public class MyCustomerFilter implements TypeFilter {
    public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException {
        String className = metadataReader.getClassMetadata().getClassName();
        return className.contains("Service");
    }
}【sprinb-boot】@ComponentScan 跳过扫描 excludeFilters的更多相关文章
- SpringMVC 源码深度解析<context:component-scan>(扫描和注冊的注解Bean)
		我们在SpringMVC开发项目中,有的用注解和XML配置Bean,这两种都各有自己的优势,数据源配置比較经经常使用XML配置.控制层依赖的service比較经经常使用注解等(在部署时比較不会改变的) ... 
- spring boot controller路由 url 扫描不到问题
		spring boot项目出现controller的路由没被注册,原因:启动类application跟controller不在一个包中,扫描不到controller, 如启动类在com.oyx.a,c ... 
- context:component-scan 注解的扫描
		<context:component-scan base-package="com.matt.cloud"/> bean-context中 spring.handler ... 
- Spring Boot项目跳转不到jsp页面是怎么回事
		SpringBoot访问不了JSP但却能进入后台 一直报错: 解决方法: 改成下面的 
- 【Spring源码分析系列】启动component-scan类扫描加载过程
		原文地址:http://blog.csdn.net/xieyuooo/article/details/9089441/ 在spring 3.0以上大家都一般会配置一个Servelet,如下所示: &l ... 
- spring启动component-scan类扫描加载过程(转)
		文章转自 http://www.it165.net/pro/html/201406/15205.html 有朋友最近问到了 spring 加载类的过程,尤其是基于 annotation 注解的加载过程 ... 
- 精尽Spring Boot源码分析 - 剖析 @SpringBootApplication 注解
		该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Sprin ... 
- 【springboot】给你一份Spring Boot知识清单
		目录: 一.抛砖引玉:探索Spring IoC容器 1.1.Spring IoC容器 1.2.Spring容器扩展机制 二.夯实基础:JavaConfig与常见Annotation 2.1.JavaC ... 
- Spring Boot 自动扫描组件
		使用@ComponentScan自动扫描组件 案例准备 1.创建一个配置类,在配置类上添加 @ComponentScan 注解.该注解默认会扫描该类所在的包下所有的配置类,相当于之前的 <con ... 
- spring boot(二):启动原理解析
		我们开发任何一个Spring Boot项目,都会用到如下的启动类 @SpringBootApplication public class Application { public static voi ... 
随机推荐
- 常见的mysql 函数 字符串函数
			1. concat (s1,s2,....sn) 字符串拼接,将 s1,s2,... sn 拼接成一个字符串 : 2. lower(str) 将字符串全部转换成小写 3. upper(str) 将字符 ... 
- Vue3中的新的内置组件
			在vue2中的内置组件: 动态路由中的 component :作用:动态显示路由的挂载点,使用 is 属性动态显示组件 : keep-alive :作用:使被包裹的组件保留状态,避免被重新渲染 : 路 ... 
- log4j2配置自定义filter报错Unable to invoke factory method in class
			报错Unable to invoke factory method in class com....log4j.ScheduleLoggerFilter 2020-05-13 16:32:35,613 ... 
- 使用svn保存markdown文档
			使用svn管理md文档时,使用谷歌直接访问出现中文乱码,解析格式错误的问题,可以通过安装谷歌浏览器的插件解决. 一.解决格式解析错误的问题 安装插件 Markdown Preview Plus ,安装 ... 
- RocketMQ 5.0 如何配置TLS加密传输?
			本文作者:李伟,社区里大家叫小伟,Apache RocketMQ Committer,RocketMQ Python客户端项目Owner ,Apache Doris Contributor,腾讯云Ro ... 
- CentOS_7安装docker
			CentOS_7安装docker Install Docker Engine on CentOS 官网文档:https://docs.docker.com/engine/install/centos/ ... 
- React h5架构
			目录 目录 初始化项目架构 React h5架构 工具 技术栈 搭建流程 一.Vite构建项目 二.添加 git 三.运行项目 四.配置 Eslint 校验代码 五.配置 Prettier 格式化代码 ... 
- Multi-Patch Prediction Adapting LLMs for Time Series Representation Learning
			这篇论文是出自2024ICML的一篇论文,作者成功将大语言模型应用到时序模型之中,并在时序领域取得了很好的效果,不仅如此,作者还设置了多种下游任务,从论文结果得知,作者的模型在下游任务处都取得了很好的 ... 
- NOIP2024模拟12:孤帆远影
			NOIP2024模拟12:孤帆远影 听了机房同学的讨论,于是T1死磕冒泡和逆序对做法.最后只得了40pts. 思想对了,但不是自己的做法. 还是要坚持自己想,坚持自己可以想出来,不要被任何人带偏. T ... 
- Golang的GMP调度模型与源码解析
			0.引言 我们知道,这当代操作系统中,多线程和多进程模型被广泛的使用以提高系统的并发效率.随着互联网不断的发展,面对如今的高并发场景,为每个任务都创建一个线程是不现实的,使用线程则需要系统不断的在用户 ... 
