首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

spring技术内情

2013-02-24 
spring技术内幕1 ioc控制反转和依赖注入,把对象的构造、依赖管理的控制权从用户代码中反转到spring容器中,

spring技术内幕

1 ioc

控制反转和依赖注入,把对象的构造、依赖管理的控制权从用户代码中反转到spring容器中,由容器来管理复杂的对象和对象之间的关系。

2 接口

ioc容器的最基础的功能规范由BeanFactory接口所定义,他规定了容器要做的最基本的事情,比如getBean方法。还有一个常用的是ApplicationContext,他在BeanFactory的基础上提供了更丰富的方法:

支持不同的信息源,支持国际化的实现

访问资源,体现在对ResourceLoader和Resource的支持上,可以从不同的地方得到bean的定义资源。

支持应用事件,他继承了ApplicationEventPublisher,在上下文中引入了事件机制,这些事件可以和bean的生命周期结合起来,为bean的管理提供便利

由于他的功能较为丰富,一般在做应用开发时,以ApplicationContext作为ioc的基础是个明智的选择。

3 ioc容器的初始化

BeanDefinition的资源定位,由ResourceLoader通过统一的接口Resource来完成,为各种形式的资源定位提供统一接口。比如有的是通过文件系统来定位,有的是通过classpath来定位。

BeanDefinition的载入,即把资源文件中的信息,载入到容器的数据结构中。容器通过这个bean的抽象来管理bean。

注册BeanDefinition,容器通过一个hashmap来维护已注册的bean定义。

在refresh方法里面包含了bean的初始化过程的模板。一般来说,在ioc的初始化过程,并不包含bean的依赖注入。

4 依赖注入

一般来说,在用户调用getBean方法的时候,才会触发依赖注入。首先会创建这个bean的时候,可能会采用反射或者cglib的机制来实例化bean。当前bean创建好之后,在通过BeanDefinition的信息,递归的调用getBean实例化他的依赖bean,并注入,最终完成当前bean的完整创建。

5?扩展点

FactoryBean是一种工厂bean,这种bean本身是一个工厂,可以生产出其他bean。通过这种特性,可以为应用生成一些特殊的bean,例如ProxyFactoryBean。他提供了一个很好的封装机制,可以封装proxy,rmi,jndi等

BeanPostProcessor bean后处理器,可以允许bean监听一些容器事件,在事件发生时触发一些后续的操作。可以是一些前置的、或者扫尾的工作。

6 AOP

aop实现的一个关键角色就是ProxyFactoryBean,他结合工厂bean的特点,为委托生成了aop代理对象。

待续。。

参考http://hill007299.iteye.com/blog/1563554

?

?

?

热点排行