关于@ComponentScan TypeFilter自定义指定扫描bean的规则

 更新时间:2023年09月25日 08:40:09   作者:YoungMirror  
这篇文章主要介绍了关于@ComponentScan TypeFilter自定义指定扫描bean的规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

@ComponentScan TypeFilter自定义指定扫描bean的规则

1.FilterType.CUSTOM 自定义过滤方式

@Configuration
@ComponentScan(value = "com.wjy",useDefaultFilters = false,includeFilters = {
		@Filter(type = FilterType.CUSTOM,value = {MyFilterType.class})
})
public class Config {
	public static void main(String[] args) {
		var annotationConfigApplicationContext = new AnnotationConfigApplicationContext(Config.class);
		var beanNames = annotationConfigApplicationContext.getBeanDefinitionNames();
		//打印所有的扫描到的bean
		Arrays.stream(beanNames).forEach(e -> System.out.println(e));
	}
}

自定义过滤类:所有包含“service”的类名都扫描进来

public class MyFilterType implements TypeFilter {
	/**
	 *
	 * @param metadataReader 读取到的当前正在扫描的信息
	 * @param metadataReaderFactory 可以获取到其他任何类的信息的
	 * @return
	 * @throws IOException
	 */
	@Override
	public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException {
		//获取当前类注解信息
		var annotationMetadata = metadataReader.getAnnotationMetadata();
		//获取当前正在扫描类信息
		var classMetadata = metadataReader.getClassMetadata();
		//获取当前类路径
		var resource = metadataReader.getResource();
		if(annotationMetadata.getClassName().toLowerCase().contains("service")){
			return true;
		}
		return false;
	}
}

@ComponentScan ANNOTATION type filter requires an annotation type

异常 

访问 http://localhost/save 时 控制台报错

@ComponentScan ANNOTATION type filter requires an annotation type

原因

我们在SpringConfig Bean管理扫描范围时想给不排除掉的Bean设置 ANNOTATION排除规则时,指定错了classes属性 的类型,所以报如上错误👆

错误代码

修改后:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 一文详解如何指定Maven的JDK版本

    一文详解如何指定Maven的JDK版本

    这篇文章主要介绍了如何修改Maven的可执行文件以指定JDK版本,并验证Maven是否使用了正确的JDK版本,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • Spring P标签的使用详解

    Spring P标签的使用详解

    这篇文章主要介绍了Spring P标签的使用详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 扒一扒 Java 中的枚举类型

    扒一扒 Java 中的枚举类型

    这篇文章主要给大家介绍了Java中枚举类型的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • java实现字符串匹配求两个字符串的最大公共子串

    java实现字符串匹配求两个字符串的最大公共子串

    这篇文章主要介绍了java实现求两个字符串最大公共子串的方法,详细的描述了两个字符串的最大公共子串算法的实现,需要的朋友可以参考下
    2016-10-10
  • springboot整合mail实现邮箱的发送功能

    springboot整合mail实现邮箱的发送功能

    本文分步骤给大家介绍springboot整合mail实现邮箱的发送功能,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-09-09
  • MyBatis使用嵌套查询collection和association的实现

    MyBatis使用嵌套查询collection和association的实现

    本文详细介绍了使用MyBatis框架进行数据库操作时,如何利用collection标签实现一对多的嵌套查询和使用association标签实现一对一的嵌套查询,感兴趣的可以了解一下
    2024-09-09
  • list转tree和list中查找某节点下的所有数据操作

    list转tree和list中查找某节点下的所有数据操作

    这篇文章主要介绍了list转tree和list中查找某节点下的所有数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • idea快速找到项目中对应的类图文详解(包括源码)

    idea快速找到项目中对应的类图文详解(包括源码)

    用IDEA开发Java项目时经常会使用到各种快捷键,其中搜索是最常用的之一,下面这篇文章主要给大家介绍了关于idea如何快速找到项目中对应的类(包括源码)的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • 阿里nacos+springboot+dubbo2.7.3统一处理异常的两种方式

    阿里nacos+springboot+dubbo2.7.3统一处理异常的两种方式

    本文主要介绍了阿里nacos+springboot+dubbo2.7.3统一处理异常的两种方式,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Java新特性中Preview功能如何运行调试详解

    Java新特性中Preview功能如何运行调试详解

    这篇文章主要为大家介绍了Java新特性中Preview功能如何运行调试详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10

最新评论