Spring学习(三)--Spring的IOC

1、BeanFactory和FactoryBean

BeanFactory是一个接口类,定义了IOC容器最基本的形式,提供了IOC容器所应该遵守的基本服务契约。

FactoryBean是一个能产生或者修饰对象生成的工厂Bean,实现方式与工厂模式和修饰器模式类似。

2、getBean()

getBean()方法是使用IOC容器API的主要方法,可以通过指定名字的索引来获取IOC容器的Bean。

3、BeanFactory的设计原理

4、ApplicationContext

ApplicationContext除了可以提供容器的那些基本功能外,还为用户提供了各种附加服务。

MessageSource,支持国际化,为开发多语言版本应用提供服务。

访问资源更加方便。

支持应用事件,继承了接口ApplictionEventPublisher,在上下文中引入了事件机制。

在ApplicationContext提供附加服务,使IOC容器的工能更加丰富。

5、IOC容器的初始化

IOC容器的初始化是通过refresh()f方法来启动的,这个方法是用来启动IOC容器,IOC容器的启动过程:BeanDefinition的资源Resource定位、载入和注册。

Spring将这三个过程分离,分别用不同的模块进行,使用户可以更加方便的适合自己的IOC容器的初始化过程。

(1)Resource定位

由ResourceLoader通过统一的Resource接口来实现的,这个Resource接口对各种Definition定义了统一的接口。

(2)BeanDefinition的载入

BeanDefinition就是的普通的POJO的抽象表示,通过BeanDefinition定义的数据结构,是IOC容器可以更加方便的管理Bean。

(3)向IOC容器注册BeanDefinition

通过调用BeanDefinitionRegistry接口的实现来完成的,把载入过程中解析到的BeanDefinition在IOC容器中注入到一个HashMap中,IOC容器通过HashMap来持有这些BeanDefinition。

IOC的初始化过程不包含依赖注入,依赖注入发生在第一次通过getBean()从容器中获取Bean的时候。我们可以通过对预实例化的配置来规定依赖注入的发生时间。 

猜你喜欢

转载自www.cnblogs.com/carblack/p/10858884.html