Spring判断类上是否有某个注解
2021-10-04 本文已影响0人
愚思
在解析时不管是<bean />,还是@Bean都会被包装成BeanDefinition,先被MetadataReader包装,进而再被包装成BeanDefinition,MetadataReader交给了MetadataReaderFactory进行管理。
1、首先拿到SimpleMetadataReaderFactory
2、获取到MetadataReader对象
3、拿到其中的注解元数据AnnotationMetadata对象
4、调用hasAnnotation方法
public void test3() throws IOException {
SimpleMetadataReaderFactory metadataReaderFactory = new SimpleMetadataReaderFactory();
MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(CircularA.class.getName());
AnnotationMetadata annotationMetadata = metadataReader.getAnnotationMetadata();
System.out.println(annotationMetadata.hasAnnotation(Component.class.getName()));
System.out.println(annotationMetadata.hasAnnotatedMethods(Autowired.class.getName()));
}
5、判断方法上有没有就使用hasAnnotatedMethods
Spring注解的判断