Spring框架之基础类—AnnotatedGenericBeanDefinition实现类

来源:互联网 发布:淘宝手工制品的品牌 编辑:程序博客网 时间:2024/06/18 04:07

一、AnnotatedGenericBeanDefinition简介

AnnotatedGenericBeanDefinition类继承GenericBeanDefinition抽象类,通过实现AnnotatedBeanDefinition接口支持暴露注解元数据信息。
注意:GenericBeanDefinition变体主要用于测试代码(希望对AnnotatedBeanDefinition进行操作),例如Spring组件的扫描支持的实现类(默认类是ScannedGenericBeanDefinition,通常也实现AnnotatedBeanDefinition接口)。

二、AnnotatedGenericBeanDefinition源码详解

@SuppressWarnings("serial")public class AnnotatedGenericBeanDefinition extends GenericBeanDefinition implements AnnotatedBeanDefinition {    private final AnnotationMetadata metadata;  // 注解元数据    private MethodMetadata factoryMethodMetadata;   // 工厂方法元数据    /**     * 构造器     */    public AnnotatedGenericBeanDefinition(Class<?> beanClass) {        setBeanClass(beanClass);        this.metadata = new StandardAnnotationMetadata(beanClass, true);    }    public AnnotatedGenericBeanDefinition(AnnotationMetadata metadata) {        Assert.notNull(metadata, "AnnotationMetadata must not be null");        if (metadata instanceof StandardAnnotationMetadata) {            setBeanClass(((StandardAnnotationMetadata) metadata).getIntrospectedClass());        }        else {            setBeanClassName(metadata.getClassName());        }        this.metadata = metadata;    }    public AnnotatedGenericBeanDefinition(AnnotationMetadata metadata, MethodMetadata factoryMethodMetadata) {        this(metadata);        Assert.notNull(factoryMethodMetadata, "MethodMetadata must not be null");        setFactoryMethodName(factoryMethodMetadata.getMethodName());        this.factoryMethodMetadata = factoryMethodMetadata;    }    /**     * 基础方法     */    @Override    public final AnnotationMetadata getMetadata() {         return this.metadata;    }    @Override    public final MethodMetadata getFactoryMethodMetadata() {        return this.factoryMethodMetadata;    }}
阅读全文
0 0
原创粉丝点击