
文章图片

文章图片

文章图片

文章图片

文章图片

文章图片

文章图片

文章图片

文章图片

文章图片
我们知道Spring的可用通过多种方式进行配置:XML配置文件、Groovy配置文件、注解配置、Java代码配置 。 无论什么样的形式的配置都要先被解析成初始化Bean所需要的各种元信息(Metadata) , 也就是BeanDefinition对象
我们重点关注org.springframework.context.support.AbstractApplicationContext#refresh中调用的
注释写的简单 , 告诉子类来刷新内部的beanFactory , 返回被刷新的BeanFactory实例
getBeanFactory就是返回已经实例化好的beanFactory , 比较简单 。 所以我们重点关注refreshBeanFactory
以上 , 很清楚的看到创建刷新BeanFactory的几个关键事项:1.创建BeanFactory实例createBeanFactory()
2.留给子类扩展 , 对BeanFactory做一些个性化设置customizeBeanFactory(beanFactory)
3.加载BeanDefinitionloadBeanDefinitions(beanFactory)
BeanFactory的实例化
先来看BeanFactory的创建注释写的很清楚 , 为context创建一个beanFactory , 因为创建的是DefaultListableBeanFactory的实例 , 在下一步customizeBeanFactory(beanFactory)中 , 我们就可以调用它的一些方法来设置是否允许BeanDefinition定义覆盖、是否允许循环引用等 , 然后在AbstractAutowireCapableBeanFactory的构造器中 , 设置了几个Aware类的依赖注入检查
在AbstractAutowireCapableBeanFactory中设置了父BeanFactory(如果有的话)
还记得我们创建的BeanFactory是new的那个子类吗?对 , 是`` , 我们也可以通过类图来大概看一下它具备那些能力和属性
解释一个几个Registry(注册器)
?AliasRegistry 要求子类实现提供别名的管理能力(注册、查询等接口)
【阿里巴巴|Spring源码之——有BeanDefinition才有Bean】?BeanDefinitionRegistry 要求子类实现提供BeanDefinitition的管理能力
?SingletonBeanRegistry 要求子类实现提供单例Bean的管理能力
所有new出来的这个DefaultListableBeanFactory就必定有这些相关的接口
对BeanFactory的个性化设置
上面已经提到过了 , 我们列举几个典型的可被覆盖的BeanFactory属性?setAllowBeanDefinitionOverriding 是否允许BeanDefinition覆盖 , 有多个配置来源时可能会产生命名冲突等 , 这个设置也对Bean的别名覆盖生效 。 为false时 , 如果有冲突会抛异常
- 阿里巴巴|电商转折点出现?神秘消失23天的李佳琦,意外暴露了阿里的问题
- 阿里巴巴|李佳琦消失扯下阿里“遮羞布”,原来淘宝根本就没有护城河
- 阿里巴巴|低调了三年的阿里如今又重新走上了神坛,马云藏了十年的底牌再也藏不住了
- 阿里巴巴|蚂蚁和阿里,准备彻底分家
- spring|纯白ITX来了,还支持GEAR 1高频内存!新款七彩虹B660迷你主板测试
- 阿里巴巴|马云现身西班牙开12亿豪华游艇
- 阿里巴巴|线上酒店,把线下渠道搬到线上,同样可以得到商机
- 阿里巴巴|享受退休生活的阿里巴巴创始人马云现身西班牙马略卡岛
- 任正非|京东618增长率历年最慢,阿里巴巴表示:难兄难弟
- 阿里巴巴|发生了什么?李佳琪神秘“消失”,阿里“遮羞布”被撕开
