第三章 spring-bean之beanFactory总结

前言

你们看了前面七节,而后个人解读。是否比较晕。没意义了。每节都是截取的精华给你们了。一些没用,不重要,过期的内容。就没有写了。spring

总结

一,补足的地方

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写得很复杂。历史缘由,也用区域缘由。设计

相关文章
相关标签/搜索