关于@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属性 的类型,所以报如上错误👆

错误代码

修改后:

总结

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

相关文章

  • SpringCloud+MyBatis分页处理(前后端分离)

    SpringCloud+MyBatis分页处理(前后端分离)

    这篇文章主要为大家详细介绍了SpringCloud+MyBatis分页处理,前后端分离,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • springboot 通过博途获取plc点位的数据代码实现

    springboot 通过博途获取plc点位的数据代码实现

    这篇文章主要介绍了springboot 通过博途获取plc点位的数据的代码实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • Spring Boot2升级到3的详细步骤记录

    Spring Boot2升级到3的详细步骤记录

    从Spring Boot 2到Spring Boot 3的升级是一次全面而深刻的变革,它不仅带来了技术栈的更新和新特性的引入,还显著提升了应用的性能和开发效率,这篇文章主要介绍了Spring Boot2升级到3的详细步骤,需要的朋友可以参考下
    2025-08-08
  • JAVA 多线程编程之CountDownLatch使用详解

    JAVA 多线程编程之CountDownLatch使用详解

    当多个线程需要协调和同步执行任务时,Java中的CountDownLatch(倒计时门闩)是一个常用的工具类,本文将介绍 CountDownLatch 的基本原理、用法以及示例代码,需要的朋友可以参考下
    2023-05-05
  • 利用java反射机制调用类的私有方法(推荐)

    利用java反射机制调用类的私有方法(推荐)

    下面小编就为大家带来一篇利用java反射机制调用类的私有方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • Java实现文件的归档和解档

    Java实现文件的归档和解档

    这篇文章主要为大家详细介绍了Java实现文件的归档和解档,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • Spring MVC实现mysql数据库增删改查完整实例

    Spring MVC实现mysql数据库增删改查完整实例

    这篇文章主要介绍了Spring MVC实现mysql数据库增删改查完整实例,从创建一个web项目开始,分享了项目结构以及具体Java代码和前端页面等相关内容,具有一定借鉴价值,需要的朋友可以了解下。
    2017-12-12
  • elasticsearch开发中data-streams使用解析

    elasticsearch开发中data-streams使用解析

    这篇文章主要为大家介绍了elasticsearch开发中data-streams使用解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • IntelliJ IDEA Project窗口的一些设置详解

    IntelliJ IDEA Project窗口的一些设置详解

    这篇文章主要介绍了IntelliJ IDEA Project窗口的一些设置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Java Property类使用详解

    Java Property类使用详解

    这篇文章主要介绍了Java Property类使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04

最新评论