spring容器原理一

  spring IOC使应用中依赖管理变得简单,所以的bean创建,以及当前bean所需要的另外类的实例都由容器来管理。

  想像下,如果不用spring ioc。有业务类A,需要业务类B的实例。而业务类B需要业务类C的实例。这里如果业务类A为入口main方法,我们需要进行以下几个步聚完成A类的实例化:

  1.手动创建C类实例

  2.然后创建B类实例并将之前创建的C类实例插入到B的字段中

  3.最后创建A的实例,并将B的实例插入到A类的字段中

  可以想像实例化,并管理这些依赖的过程对于程序员来说,简直是灾难。如果后续C类又需要D类的字段,又需要改动这段初始化代码。

  基于以上原因,我们想像下,这部分实例化及依赖管理能够由第三方管器来做,而程序员只需关心业务逻辑。

  我们希望,第三方容器的引入对现有项目代码应该影响很小,因此可以考虑用专门的配置文件来做。这样对原有类没有任何侵入。

 spring容器就是基于这样一目标而设计的。

  spring有许多款容器供用户选择,如ApplicationContext,ClassPathXMLApplicationContext等。

  spring 设计容器时,定义了一个beanFactory接口,定义了最常用的几个操作:getBean,containsBean,getType等。

  而基于这个beanFactory,在设计实现时,原则上重用一些代码,这个可以用继承与组合。spring中,用继承来复用大量的代码。

  beanFactory继承体系如下,此处只研究XmlBeanFactory这个分支:

   beanFactory->AutowireCapableBeanFactory->AbstractAutowireCapableBeanFactory->DefaultListableBeanFactory->XmlBeanFactory


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值