当前位置:首页 > 编程笔记 > 正文
已解决

4. Spring获取元数据信息MetadataReader

来自网友在路上 134834提问 提问时间:2023-11-18 20:34:01阅读次数: 34

最佳答案 问答题库348位专家为你答疑解惑

简介

由于前面文章看源码时看到了MetadataReader,本文就简单介绍一下

在spring中会大量用到MetadataReader,spring在实例化单例Bean之前,为什么也能拿到类的元数据信息,包括注解信息等。

原因就是用到了MetadataReader,而MetadataReader使用的是Asm技术 (通过SimpleAnnotationMetadataReadingVisitor可以知道使用的是ASM技术)

使用

既然spring提供了该工具,其实我们也是可以使用的,这在我们的编码中可能会提高很大的效率

例如

  1. 定义一个注解
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MetaTest {String value() default "";
}
  1. UserBean使用注解
@Component
@MetaTest(value = "test")
public class UserBean {}
  1. 获取类的元数据信息

案例代码

private static void testMeta() {SimpleMetadataReaderFactory readerFactory = new SimpleMetadataReaderFactory();try {MetadataReader metadataReader = readerFactory.getMetadataReader(UserBean.class.getName());AnnotationMetadata annotationMetadata = metadataReader.getAnnotationMetadata();ClassMetadata classMetadata = metadataReader.getClassMetadata();System.out.println(annotationMetadata.getAnnotationAttributes(Component.class.getName()));System.out.println(annotationMetadata.getAnnotationAttributes(MetaTest.class.getName()));System.out.println(classMetadata.getClassName());} catch (IOException e) {throw new RuntimeException(e);}
}输出
{value=}
{value=test}
com.shura.beans.UserBean

类似的spring还提供了AnnotationUtils,也是非常常用。


欢迎关注,学习不迷路!

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"4. Spring获取元数据信息MetadataReader":http://eshow365.cn/6-38654-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!