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

错误代码

修改后:

总结

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

相关文章

  • 深入Java注解原理Annotation

    深入Java注解原理Annotation

    这篇文章主要介绍了深入Java注解原理Annotation,注解可以附加在package,class,method,field等上面,可相当于添加了额外的辅助信息,可以通过反射机制编程实现对这些元数据的访问,需要的朋友可以参考下
    2023-10-10
  • Java实现发送手机短信语音验证功能代码实例

    Java实现发送手机短信语音验证功能代码实例

    这篇文章主要介绍了Java实现发送手机短信语音验证功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • IDEA 2020 无法启动的解决办法(启动崩盘)附IDEA 2020 新功能

    IDEA 2020 无法启动的解决办法(启动崩盘)附IDEA 2020 新功能

    这篇文章主要介绍了IDEA 2020 无法启动的解决办法(启动崩盘)附IDEA 2020 新功能,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • 解决SpringMVC、tomcat、Intellij idea、ajax中文乱码问题

    解决SpringMVC、tomcat、Intellij idea、ajax中文乱码问题

    这篇文章主要介绍了解决SpringMVC、tomcat、Intellij idea、ajax中文乱码问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Spring MVC中的拦截器案例演示

    Spring MVC中的拦截器案例演示

    拦截器可以拦截所有的请求,也可以只拦截满足指定的请求, Spring MVC 的拦截器类似于过滤器,用来执行预处理和后处理操作,本文给大家介绍Spring MVC中的拦截器案例演示,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • 图文详解Java的反射机制

    图文详解Java的反射机制

    反射就是Reflection,Java的反射是指程序在运行期可以拿到一个对象的所有信息。反射机制是框架的灵魂,一个java程序员不能不会使用反射,本文就来和大家一起详细聊聊Java的反射机制
    2022-08-08
  • 详解Java中对象池的介绍与使用

    详解Java中对象池的介绍与使用

    对象池,顾名思义就是一定数量的已经创建好的对象(Object)的集合。这篇文章主要为大家介绍了Java中对象池的介绍与使用,感兴趣的可以了解一下
    2023-02-02
  • Java数据结构之图的两种搜索算法详解

    Java数据结构之图的两种搜索算法详解

    在很多情况下,我们需要遍历图,得到图的一些性质。有关图的搜索,最经典的算法有深度优先搜索和广度优先搜索,接下来我们分别讲解这两种搜索算法,需要的可以参考一下
    2022-11-11
  • java利用CountDownLatch实现并行计算

    java利用CountDownLatch实现并行计算

    这篇文章主要介绍了java利用CountDownLatch实现并行计算,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • MyBatis Plus逻辑删除和分页插件使用详解

    MyBatis Plus逻辑删除和分页插件使用详解

    这篇文章主要介绍了MyBatis Plus之逻辑删除和分页插件使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12

最新评论