@ComponentScan注解

@ComponnetScan

1.作用

扫描指定的包以及下面所有的子包。

value属性:指明要扫描的包
excludeFilters属性:指明要扫描时需要排除的包。
includeFilters属性:指明要扫描时需要包含那些包,但是在使用时需要将默 认的包扫描规则禁用,即useDefaultFilters = false。

excludeFilters和includeFilters属性在使用是可以自己指定过滤的规则,
@Filter注解里面的type属性可以指定过滤规则:
1.ANNOTATION:按照注解的方式进行过滤

@Filter(type=FilterType.ANNOTATION,classes = {Controller.class})

2.ASSIGNABLE_TYPE:按照给定的类型进行过滤

@Filter(type=FilterType.ASSIGNABLE_TYPE,classes = {BookDao.class})

3.ASPECTJ:按照ASPECTJ表达式进行过滤,很少使用
4.REGEX:按照正则表达式进行过滤
5.CUSTOM:自定义规则
首先自定义一个过滤规则类,然后在@Filter的classes属性值指定自定义的过滤类即可。

//过滤类
public class MyTypeFilter implements TypeFilter{

	/*
	 * MetadataReader:获取当前正在读取的类的信息
	 * MetadataReaderFactory:获取所有类的信息
	 */
	@Override
	public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory)
			throws IOException {
		//获取当前类的注解信息
		AnnotationMetadata annotationMetadata = metadataReader.getAnnotationMetadata();
		//获取当前正在扫描的类的信息
		ClassMetadata classMetadata = metadataReader.getClassMetadata();
		//获取当前类的资源(类的路径)
		Resource resource = metadataReader.getResource();
		
		String className = classMetadata.getClassName();
		
		System.out.println(className);
		
		//过滤规则
		if (className.contains("er")) {
			return true;
		}
		return false;
	}
}

//在主配置类中指定
@Filter(type=FilterType.CUSTOM,classes = {MyTypeFilter.class})
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值