书籍《spring技术内幕》系列一之ioc容器与容器体系
基本
spring的愿景
与java ee的比较
主要作者:Rod Johnson
源码版本: 3.0
源码环境搭建
spring 源码组织结构
瞭望一下这片生机勃勃而又有些神秘的代码丛林,就像探险者面对茂密的热带雨林那样,一起做个深呼吸,准备开始这充满乐趣和挑战的Spring源代码之旅
IoC容器和AOP是Spring的核心,是Spring系统中其他组件模块和应用开发的基础
第二章 spring ioc容器
控制反转 VS 依赖注入
依赖对象的引用由具体Bean管理 =====》由容器代为管理
把控制权从具体Bean的手中转交给容器控制=====》解决面向对象系统涉及复杂性和提交面向对象系统可测试性的有效解决方案
spring是一个Ioc(Inversion of control)容器
BeanFactory 定义了ioc容器最基本功能的接口
书籍《spring技术内幕》系列一之ioc容器与容器体系BeanDefinition
定义了ioc容器各个bean对象的依赖关系
IoC容器是用来管理对象依赖关系的,对IoC容器来说,BeanDefinition就是对依赖反转模式中管理的对象依赖关系的数据抽象,也是容器实现依赖反转功能的核心数据结构,依赖反转功能都是围绕对这个BeanDefinition的处理上完成的。
2.2 IoC容器系列的实现:BeanFactory和ApplicationContext
各种具体类,比如DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等都可以看成是容器的附加了某种功能的具体实现,也就是容器体系中的具体容器产品。
FactoryBean vs BeanFactory
后者就是上面提到的ioc容器接口
而前者是一个bean,只不过是一种特殊的bean,能够生成bean对象的工厂bean,类似于设计模式的工厂模式
引用方式区别:用户使用容器时,可以使用转义符“&”来得到FactoryBean本身,用来区分通过容器来获取FactoryBean产生的对象和获取FactoryBean本身。举例来说,如果myJndiObject是一个FactoryBean,那么使用&myJndiObject得到的是FactoryBean,而不是myJndiObject这个FactoryBean产生出来的对象。
参看源码BeanFactory的属性
String FACTORY_BEAN_PREFIX = "&";
BeanFactory接口定义如下
TODO:缺一张截图中
阅读BeanFactory接口源代码可以了解如下有用信息
TODO:
0.同一个ioc容器中bean名称唯一。(这个很明确啦)
1.单例Bean和单例模式有所区别,单例Bean是指在ioc容器单例,也即可能在父容器中存在相同bean名称的bean。
2.定义了bean初始化和注销的标准生命周期过程和顺序。