文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
我们知道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时 , 如果有冲突会抛异常
- 阿里巴巴|日本也恶意刷低分!话题的《秋筱宫》采访书 亚马逊不得不限制评论
- 阿里巴巴|小腿坚强的人腰才会挺,马云和刘强东为什么都那么重视基层?
- 阿里巴巴|阿里张勇连线300家平台商家:为商家多做实事,阿里义不容辞
- 阿里巴巴|腾讯利润大幅下滑,已开启新一轮裁员,范围进一步扩大
- 阿里巴巴|阿里张勇连线300家平台商家:为商家多做实事 阿里义不容辞
- 阿里巴巴|马云“4个新身份”曝光,多重豁免权加身,和老美合作目的不简单
- 阿里巴巴|开启发展“新引擎”——“小巨人”插上数字化“翅膀”
- 阿里巴巴|残影空间出品方解析短视频平台对影视宣发的作用与帮助
- 阿里巴巴|阿里正式官宣,玄铁处理器成功运行,马云果然说到做到
- 阿里巴巴|马云厉害了,“天价”蚂蚁森林正式被确认变成这般模样,望周知!