1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 4 组件注册-自定义TypeFilter指定过滤规则

4 组件注册-自定义TypeFilter指定过滤规则

时间:2019-07-31 21:16:37

相关推荐

4 组件注册-自定义TypeFilter指定过滤规则

4、组件注册-自定义TypeFilter指定过滤规则

4.1 FilterType.ANNOTATION 按照注解方式

4.2 FilterType.ASSIGNABLE_TYPE 按照给定的类型

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

4.3 FilterType.ASPECTJ 按照ASPECTJ表达式

4.4 FilterType.REGEX 按照正则表达

4.5 FilterType.CUSTOM 按照自定义规则

@ComponentScan(value = "com.hw.springannotation", useDefaultFilters = false,includeFilters = {// @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = {Controller.class}),//@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {BookService.class}),@ComponentScan.Filter(type = FilterType.CUSTOM, classes = {MyTypeFilter.class})}) // 指定只扫描

创建MyTypeFilter类,需要实现TypeFilter 接口,重写match()方法

package com.hw.springannotation.config;import org.springframework.core.io.Resource;import org.springframework.core.type.AnnotationMetadata;import org.springframework.core.type.ClassMetadata;import org.springframework.core.type.classreading.MetadataReader;import org.springframework.core.type.classreading.MetadataReaderFactory;import org.springframework.core.type.filter.TypeFilter;import java.io.IOException;/*** @Description TODO* @Author hw* @Date /11/27 18:49* @Version 1.0*/public class MyTypeFilter implements TypeFilter {/*** Determine whether this filter matches for the class described by* the given metadata.** @param metadataReader the metadata reader for the target class 读取到得当前正在扫描的类的信息* @param metadataReaderFactory a factory for obtaining metadata readers 一个可以探索其他类信息的工厂类*for other classes (such as superclasses and interfaces)* @return whether this filter matches* @throws IOException in case of I/O failure when reading metadata*/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;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。