Spring: @ComponentScan @ComponentScans
只扫描@Repository, 必须关闭默认Filter
@ComponentScan(value = {"io.vent.venial"},
includeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = {Repository.class})},
useDefaultFilters = false)
排除@Repository
@ComponentScan(value = {"io.vent.venial"},
excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = {Repository.class})})
@ComponentScans结合多个@ComponentScan
@ComponentScans(value = {@ComponentScan("io.vent.venial.dao"),@ComponentScan("io.vent.venial.service")})
排除指定类
@ComponentScan(value = "io.vent.venial", excludeFilters = { @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {VenueDao.class}) })
排除FQDN类名含有service的
@ComponentScan(value = "io.vent.venial", excludeFilters = { @ComponentScan.Filter(type = FilterType.CUSTOM, classes = {MyTypeFilter.class}) })
package io.vent.venial; 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; public class MyTypeFilter implements TypeFilter{ @Override public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException{ /** * metadataReader:读取到的当前正在扫描的类的信息 * metadataReaderFactory:可以获取到其他任何类信息的 */ //获取当前类注解的信息 AnnotationMetadata annotationMetadata = metadataReader.getAnnotationMetadata(); //获取当前正在扫描的类的类信息 ClassMetadata classMetadata = metadataReader.getClassMetadata(); //获取当前类资源(类的路径) Resource resource = metadataReader.getResource(); String className = classMetadata.getClassName(); System.out.println("className = " + className); System.out.println("\033[37;7m>>>>>> " + className.contains("er") + " <<<<<<\033[0m"); if(className.contains("service")){ return true; } return false; } }

浙公网安备 33010602011771号