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; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了