spring 源码之 IOC 容器的初始化过程

  学习 spring源码真的是一件痛并快乐的刺激的事。昨天听了别人的视频,任然是一头雾水,层次不一样,就不太容易接受。直接打开spring源码,断点调试,有点难度。于是又捧起书,《深入理解spring技术内幕》,先学习一些里边的概念,设计模式。再回头自己撸源码比较好一点。

  展开学习,和记录。我尽量少用术语,用故事,或者白话,来讲出来理解的内容。

# # spring 的核心内容就是 IOC

  IOC 总结成一句话,它的作用就是用来帮我们维护对象之间的关系。所谓的控制反转反转的就是对象的创建。不用spring 我们创建一个对象通常是 new ,或者使用反射,克隆等,来实现。 而在使用spring 以后,spring 替你来掌握对象的实例化,来帮你维护这些对象之间的关系。

  大家选用spring 也正是因为,spring 帮我们 从复杂的对象关系的依赖维护中解脱出来。

 

# # IOC 容器

  在书中指出,容器有两个系列:一个是 beanFactory, 一个是 applicationContext 。 至于究竟是什么,我先不说。既然是容器,那就先理解成是水桶把,一个是木质的水桶,一个是钢铁的水桶。

  beanFactory 是一个接口。其实就是一个最简版的具有一定雏形的水桶,就像是打个样。它告诉大家,水桶要能装水,要有一个提手,装着水不能撒。

  所以 beanFactory 可以理解为低配版,而 applicationContext 是定制版,至尊版。

 

# # beanDefinition

 这个东东就是最核心的数据结构,就是它要完成对对象关系之间的抽象。 beanDefinition 就是水桶里边装的水。

 

# # 容器的设计

 

 # 第一条主线 beanFactory

  beanFactory 是一个接口,提供最基础的定义,像 getBean()

  下边 通过增加 接口的形式来扩展功能和定义。

  hierarchicalBeanFactory 接口实现了 beanFactory 接口,增加了getParentBeanFactory(),这个扩展赋予了管理双亲IOC容器的管理功能。

  configurableBeanFactory 接口 实现了  hierarchicalBeanFactory 接口,通过addBeanPostProcessor()配置 bean 的后置处理器

 从中我们可以学习到的是这种设计的理念,我们也可以通过这样接口设计的方式来进行功能的扩展。

 

# 第二条主线 applicationContext

 是从 beanFactory 到 configurableApplicationContext 或者  webApplicationContext  

 后边这两个是我们经常用到的。

 

# #  容器的启动过程

  如果想要很短的时间知道过程请看这篇文章:https://juejin.im/post/5af8f8066fb9a07ac85a853e

  更加详细的剖析看这篇文章:https://juejin.im/post/5ab30714f265da237b21fbcc

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值