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

错误代码

修改后:

总结

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

相关文章

  • idea运行main方法或Test避免编译整个应用的实现方法

    idea运行main方法或Test避免编译整个应用的实现方法

    这篇文章主要介绍了idea运行main方法或Test避免编译整个应用的方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • java基础详细笔记之异常处理

    java基础详细笔记之异常处理

    异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的,下面这篇文章主要给大家介绍了关于java基础详细笔记之异常处理的相关资料,需要的朋友可以参考下
    2022-03-03
  • Java控制语句之if、switch语句

    Java控制语句之if、switch语句

    这篇文章主要介绍了Java控制语句之if、switch语句的相关资料,需要的朋友可以参考下
    2016-01-01
  • Struts 2 实现Action的几种方式

    Struts 2 实现Action的几种方式

    本篇文章主要介绍了Struts 2 实现Action的几种方式,Struts 2框架下实现Action类有三种方式,有兴趣的可以了解一下
    2017-10-10
  • SpringMVC拦截器超详细解读

    SpringMVC拦截器超详细解读

    SpringMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。 依赖于web框架,在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用
    2022-07-07
  • Java中Controller引起的Ambiguous mapping问题及解决

    Java中Controller引起的Ambiguous mapping问题及解决

    这篇文章主要介绍了Java中Controller引起的Ambiguous mapping问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • MyBatisPlus唯一索引批量新增或修改的实现方法

    MyBatisPlus唯一索引批量新增或修改的实现方法

    本文主要介绍了MyBatisPlus唯一索引批量新增或修改的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • SpringCloud之Feign远程接口映射的实现

    SpringCloud之Feign远程接口映射的实现

    这篇文章主要介绍了SpringCloud之Feign远程接口映射的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 基于springboot服务间Feign调用超时的解决方案

    基于springboot服务间Feign调用超时的解决方案

    这篇文章主要介绍了基于springboot服务间Feign调用超时的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java中的函数式编程

    Java中的函数式编程

    这篇文章介绍Java中的函数式编程,函数式编程是一种编程范式,其中程序是通过应用和组合函数来构造的。它是一种声明式编程范式,其中函数定义是表达式树,每个表达式树返回一个值,而不是一系列改变程序状态的命令语句,具体情况请看下文,希望对你有所帮助
    2021-10-10

最新评论