首页 > 编程语言 >java扫描指定注解的工具类

java扫描指定注解的工具类

时间:2023-02-27 00:44:49浏览次数:34  
标签:resource java String annotationClassMap beanName 扫描 clazz 注解 class


public class BaseClassUtils {

private static final String resource_pattern="/*.class";

public static Map<String,Class> scanMyComponentAnnotation(String basePackage){
Map<String,Class> annotationClassMap=new HashMap<>();
//spring工具类,可以获取指定路径下的全部类
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
try {
String pattern = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX +
ClassUtils.convertClassNameToResourcePath(basePackage) + resource_pattern;
Resource[] resources = resourcePatternResolver.getResources(pattern);
//MetadataReader 的工厂类
MetadataReaderFactory refractory = new CachingMetadataReaderFactory(resourcePatternResolver);
for (Resource resource : resources) {
//用于读取类信息
MetadataReader reader = refractory.getMetadataReader(resource);
//扫描到的class
String classname = reader.getClassMetadata().getClassName();
Class<?> clazz = Class.forName(classname);
//判断是否属于指定的注解类型
if(clazz.isAnnotationPresent(MyComponent.class)){
//获得注解对象
MyComponent annotation = clazz.getAnnotation(MyComponent.class);
//获得属value属性值
String beanName = annotation.value();
//判断是否为""
if(beanName!=null&&!beanName.equals("")){
//存储到Map中去
annotationClassMap.put(beanName,clazz);
continue;
}

//如果没有为"",那就把当前类的类名作为beanName
annotationClassMap.put(clazz.getSimpleName(),clazz);

}
}
} catch (Exception exception) {
System.out.println(exception.getMessage());
}

return annotationClassMap;


}

}

标签:resource,java,String,annotationClassMap,beanName,扫描,clazz,注解,class
From: https://www.cnblogs.com/xinxinzhihuo/p/17158328.html

相关文章

  • java学习日记20230227-java学习方法/转义字符/注释
    Java学习方法学习java基本原理和基本语法快速入门(基本程序CRUD)研究技术的注意事项,使用细节,使用规范,如何优化JAVA转义字符\t:一个制表位,实现对......
  • java面试考题小记
    1.在java中各种数据的默认值整数(byte、short、int、long)的默认值是:0;浮点数(float、double)的默认值是:0.0;字符(char)的默认值是:空格;布尔(boolean)的默认值:false;引用类型(arra......
  • java学习日记20230226-java环境搭建及运行机制
    JDK安装配置环境变量:当执行的程序在当前目录不存在时,windows去系统path环境变量里面进行查找,如果没有找到报错不存在该命令。我的电脑-属性-高级系统设置-......
  • Java对象的创建过程
    1)类加载检查:虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。......
  • JavaSE5️⃣核心类 - 枚举(enum)
    1、枚举1.1、含义维基百科在数学和计算机科学理论中,一个集的枚举是指:列出有穷序列集的所有成员的程序。一种特定类型对象的计数。这两种类型经常重叠,是一个被命......
  • JAVA语言基础第一天
    1:Java开发环境编译运行过程:编译期:Java源文件,经过编译,生成.class字节码文件  运行期:JVM加载.class并运行.class(0和1) 特点:跨平台、一次编译到处使用......
  • Java高级[计专]助教工作总结
    一、助教工作的具体职责和任务负责协助老师发布云班课作业负责帮助老师定期收集同学们的意见与建议同学们作业互评结束后负责审查作业分值异常的作业使用爬虫对作业数......
  • JavaScript 工厂方法创建对象
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *创建一个对象 */ varobj={......
  • JavaScript 构造函数
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *创建一个构造函数,专门用来创建Person对......
  • JavaScript 立即执行函数
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> //函数对象() /* *立即执行函数 ......