如果您无法下载资料,请参考说明:
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,它