AnnotationMetadata接口是对一个类上标注的所有(多个)注解的封装,倘若一个类上有注解A和注解B,例如如下这样子
@Controller
@RequestMapping("/ggg")
public class AController {
}
那么下面代码中,实例对象am就是对@Controller和@RequestMapping两个注解的封装抽象,获取对应注解的信息时候,AnnotationMetadata接口中的很多参数是annotationName,这个annotationName指的是全限定名(包.类名称)
// 低于5.2版本中可使用new StandardAnnotationMetadata
AnnotationMetadata am=new StandardAnnotationMetadata(AController.class);
// 5.2及以上版本中,不推荐StandardAnnotationMetadata,所以写法如下
AnnotationMetadata am = AnnotationMetadata.introspect(AController.class);
// 获取requestMapping注解中的所有属性,注意是全限定名
String attributeName="org.springframework.web.bind.annotation.RequestMapping"
Map<String, Object> map = am.getAnnotationAttributes(attributeName);
总结:一个AnnotationMetadata接口实例,代表的是多个注解,是1v多的关系,且参数是全限定名