Spring源码学习第一节

Spring IOC 容器解析
本文介绍了Spring框架中IOC容器的概念及其核心组件,包括BeanFactory、BeanDefinition等,并详细阐述了它们之间的关系及其实现原理。

首先我们要对整个spring有一个整体认识了解,这尤为重要,不然,看了很多都迷茫,不知道看的有什么用。之后再具体看里面的源码

IOC容器,有很多拥有不同特性的产品。比如:水桶,有的形状不同,有的材质不同,但都是水桶。

那么spring的IOC是通过读取文本来进行一个注入 管理对象。

Resource

Resource该抽象类,就是通过I/O进行一个读取资源文件。这也是spring的IOC的主要抽象。旗下有很多的具体实现 也就是不同的水桶。


BeanFactory

而BeanFactory定义了IOC的基本功能。(水桶,能装水)


BeanDefinition

BeanDefinition用来管理各种对象以及他们之间的依赖关系。它是一个对象,这个对象用来抽象对象(比如我们需要人所以建立了person类)之间的关系。是个bean对象。

IOC容器的接口设计


1. BeanFactory->HierarchicalBeanFactory->ConfigurableBeanFactory 是一条主要的BeacFactory设计路径。

    BeanFactory定义了基本的IOC规范。

    HierarchicalBeanFactory增加了getParentBeanFactory()接口功能,使得工厂有双亲管理IOC容器功能。

    ConfigurableBeanFactory 定义一些对BeanFactory的配置功能,给ParentBeanFactory设置set方法等。

2. 以ApplicationContext上下文接口为核心的接口设计(很多接口都途径ApplicationContext)。

     ApplicationContext听过继承MessageSource、ResourceLoader、ApplicationEventPublisher接口,使得其添加很多新特性。

3. 具体IOC容器都在这个接口体系下实现的。(DefaultListableBeanFactory,实现了ConfigurableBeanFactory ,成为一个简单的IOC容器实现,XmlBeanFactory就是在其基础上做的扩展)

    XmlBeanFactory,一些IOC基础操作是实现上述接口,附属的功能,从名字可以知道,有从xml得到BeanDefinition

   

//获得Resource,spring用来操作i/o的类
ClassPathResource res = new ClassPathResource("beans.xml");
//创建工厂
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
//创建读取器,将工厂与BeanDefinition传入,将后者回写到工厂中
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);
//将res读取获得beanDefinition,回写到工厂
reader.loadBeanDefinitions(res);
上面就是XmlBeanFactory的实现方式。

ApplicationContext就是一个高级IOC容器。

扩展了MessageSource接口,可以支持国际化实现,开发多语言版本。

实现ResourceLoader和Resource,扩展了访问资源。可以从不同地方得到bean

继承了ApplicationEventPublisher,支持应用事件。

以具体实现FileSystemXmlApplicationContext为例,他继承了AbstractXmlApplicationContext,它 也是继承ApplicationContext。

该类,只需要实现,自身设计相关功能(通过file实例化) 和 启动IOC容器refresh()过程。

refresh操作类似,只需要封装调用即可。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值