Spring源码分析之IoC容器篇.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:62 大小:351KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

Spring源码分析之IoC容器篇.pdf

Spring源码分析之IoC容器篇.pdf

预览

免费试读已结束,剩余 52 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

http://www.javaeye.com-做最棒的软件开发交流社区Spring源码分析之IoC容器篇作者:imaginecuphttp://imaginecup.javaeye.com我的博客文章精选第1/62页本书由JavaEye提供的电子书DIY功能自动生成于2010-10-02http://imaginecup.javaeye.com目录1.Spring1.1Spring源码解析1IOC容器的初始化....................................................31.2Spring源码解析2IOC容器的初始化..................................................131.3Spring源码解析3IOC容器的初始化...................................................301.4Spring源码解析依赖注入...........................................................331.5Spring源码解析lazy-init属性和预实例化..............................................561.6Spring源码解析BeanPostProcessor的实现............................................58第2/62页http://imaginecup.javaeye.com1.1Spring源码解析1IOC容器的初始化1.1Spring源码解析1IOC容器的初始化发表时间:2010-10-01参考《Spring技术内幕》一书:IoC容器的基本接口是由BeanFactory来定义的,也就是说BeanFactory定义了IoC容器的最基本的形式,并且提供了IoC容器所应该遵守的最基本的服务契约。BeanFactory只是一个接口类,并没有给出容器的具体实现。DefaultListableBeanFactory,XmlBeanFactory,ApplicationContext,FileSystemXmlBeanFactory,ClassPathXmlBeanFactory都实现了BeanFactory接口并且扩展了IoC容器的功能。首先介绍BeanFactory:publicinterfaceBeanFactory{//这里是对FactoryBean的转义定义,因为如果使用bean的名字检索FactoryBean得到的对象是工厂生成的对象,//如果需要得到工厂本身,需要转义StringFACTORY_BEAN_PREFIX="&";//这里根据bean的名字,在IOC容器中得到bean实例,这个IOC容器就是一个大的抽象工厂。ObjectgetBean(Stringname)throwsBeansException;//这里根据bean的名字和Class类型来得到bean实例,和上面的方法不同在于它会抛出异常:如果根据名字取得的bean实例的Class类型和需要的不同的话。ObjectgetBean(Stringname,ClassrequiredType)throwsBeansException;//这里提供对bean的检索,看看是否在IOC容器有这个名字的beanbooleancontainsBean(Stringname);//这里根据bean名字得到bean实例,并同时判断这个bean是不是单件booleanisSingleton(Stringname)throwsNoSuchBeanDefinitionException;//这里对得到bean实例的Class类型ClassgetType(Stringname)throwsNoSuchBeanDefinitionException;//这里得到bean的别名,如果根据别名检索,那么其原名也会被检索出来第3/62页http://imaginecup.javaeye.com1.1Spring源码解析1IOC容器的初始化String[]getAliases(Stringname);}用户使用容器时,可以使用转义字符'&'来得到FactoryBean本身,用来区分通过容器来获取FactoryBean产生的对象还是获取FactoryBean本身。在Spring中所有的Bean都是由BeanFactory来管理的,而对于FactoryBean,它