第三章 spring-bean之beanFactory总结

前言

大家看了前面七节,然后我的解读。是否比较晕。没意义了。每节都是截取的精华给大家了。一些没用,不重要,过时的内容。就没有写了。

总结

一,补足的地方
1. 对实现体系的不爽
  1. AliasRegistry及实现类SimpleAliasRegistry,基本没有什么作用。一个无用的设计,造成了对体系理解十分困难,代码阅读十分困难。
  2. AutowireCapableBeanFactory接口的中一些方法是手动解决依赖与生命周期,并不向beanFactory注册bean。鸟菜啊工作这么多年,并没有使用过这些方法。在微服务架构中更加不允许出现这种破坏行的操作。
  3. AbstractBeanFactory实现类里面好多辅助类基本无用,而且这些辅助类的体系又很大,很复杂。目前都不敢看了。
2,bean注册的4种方式
  1. 通过SimpleAliasRegistry的addSingleton()直接注册一个object对象。
  2. 通过FactoryBeanRegistrySupport维护的 FactoryBean 对象获得bean
  3. 通过向DefaultListableBeanFactory的registerBeanDefinition(String beanName, BeanDefinition beanDefinition)方法注册BeanDefinition对象
  4. 通过想DefaultSingletonBeanRegistry的protected void addSingletonFactory(String beanName, ObjectFactory<?> singletonFactory) 方法注册ObjectFactory对象。

四种注册方法,有四种实现。造成里面的实现十分复杂,十分难以理解。也比较混乱。鸟菜啊感觉有点恶心。只需要一种就行了。太复杂了 。

3, BeanDefinition体系的复杂

AbstractBeanFactory对RootBeanDefinition相关变量进行管理,也对bean的依赖进行管理。而DefaultListableBeanFactory对BeanDefinition其他实现进行管理与维护。获得对象的时候是把其他BeanDefinition转成RootBeanDefinition对象进行实例化,生命周期,依赖管理等。里面有大量的转换设计与代码

4, beanFactory历史问题

beanFactory是在2001年实现的,到2018年已经17年了,没有重写。不停的在原有的基础上扩张。造成的代码的臃肿,难用,不可用。没有跟上微服务的特性。

二,简要说明重点
1. bean注册的四种方法中
  1. ObjectFactory对象的方式基本没有使用。因为历史原因,在spring内部代码还有几处。所以保留。
  2. 直接注入对象目前来说,已经很少使用了。
  3. 扫描都是使用的BeanDefinition对象
  4. 第三方插件使用FactoryBean+ BeanDefinition对象
2. bean的声明周期
  1. bean的生命周期基本是在AbstractAutowireCapableBeanFactory类中实现的
  2. bean的销毁是在DefaultSingletonBeanRegistry类中处理的
  3. bean的依赖关系是在DefaultSingletonBeanRegistry中记录的

最终

一个简单的beanFactory,被spring写得很复杂。历史原因,也用区域原因。

转载于:https://my.oschina.net/u/1261452/blog/1922671

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值