<p>
一、BeanDefinition介绍</p><p/><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/8919689-fdf864b983f84739.jpg" contenteditable="false" img-data="{"format":"jpeg","size":51119,"height":540,"width":1370}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>
BeanDefinition主要是用来描述Bean,存储Bean的相关信息,主要包括:Bean的属性、是否单例、延迟加载、Bean的名称、构造方法等。
BeanDefinition的结构如下图:
BeanDefinition定义如下:
public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement {}
● BeanDefinition继承了AttributeAccessor,具备处理属性的能力
● BeanDefinition继承了BeanMetadataElement,可以持有Bean元数据元素,作用是可以持有XML文件的一个bean标签对应的Object。
二、BeanDefinition各子类说明
● AnnotatedBeanDefinition :该接口扩展了 BeanDefinition 的功能,其用来操作注解元数据。 通过注解方式得到的 Bean(@Component、@Bean),其 BeanDefinition 类型都是该接口的实现类。
● RootBeanDefinition:该类继承自 AbstractBeanDefinition,它可以单独作为一个 BeanDefinition,也可以作为其他 BeanDefinition 的父类。
● ChildBeanDefinition:不可以单独存在,必须依赖一个父 BeanDetintion,构造 ChildBeanDefinition 时,通过构造方法传入父 BeanDetintion 的名称或通过 setParentName 设置父名称。
● GenericBeanDefinition:是 Spring 2.5 以后新引入的 BeanDefinition,是 ChildBeanDefinition 更好的替代者,它同样可以通过 setParentName 方法设置父 BeanDefinition,既可以单独使用也可以作为子BeanDefinition使用。
● ConfigurationClassBeanDefinition:该类继承自 RootBeanDefinition ,并实现了 AnnotatedBeanDefinition 接口。这个BeanDefinition用来描述加了@Bean 注解的Bean
● AnnotatedGenericBeanDefinition:该类继承自 GenericBeanDefinition ,并实现了 AnnotatedBeanDefinition 接口。这个 BeanDefinition 用来描述标注 @Configuration 注解的 Bean。
● ScannedGenericBeanDefinition:该类继承自 GenericBeanDefinition ,并实现了 AnnotatedBeanDefinition 接口。这个 BeanDefinition 用来描述标注 @Component 注解的 Bean,其派生注解如 @Service、@Controller 也同理。
</p>
BeanDefinition详解
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 前言 正如我们所熟悉的,spring 是一个“大型的工厂”,在这个工厂中会产生一个个的实例,这些实例可以是单例的、...
- BeanDefinition继承了AttributeAccessor,说明它具有处理属性的能力;BeanDefin...
- 聚沙成塔!不知不觉 Spring 源码已经更到第五篇啦~ 看源码之前,要先会用功能,这是最基本的,因为在源码讲解中...
- 概述 Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编...
- 本篇博客主要参考:Spring官网阅读(四)BeanDefinition(上) 碎碎念 在某课网看到很多培训课程,...