BeanFactory
Spring 的Ioc 容器除了是 Ioc Service Provider 还提供了其他的功能, 这边笔记将介绍 Ioc 容器的 Ioc 相关支持以及衍生的高级特性
Spring 中提供两种IOC 容器, BeanFactory 和 ApplicationContext
BeanFactory:
基本类型的ICO 容器, 提供完整的IOC支持。 默认采用延迟初始化策略(lazy-load) 只有客户端对象需要访问容器中某个收管理的对象的时候, 才对该受管理的对象进行初始化以及依赖注入的操作。
ApplicationContext
留待下章讲解
先看看 BeanFactory 的定义
1 | public interface BeanFactory { |

讲到了 BeanFactory 不得不提 BeanDefinitionRegister
Spring IOC 中的 BeanDefinition 封装了一个被管理的Bean 的所有信息, 再通过 BeanDefinitionRegister 将 Bean 注册到 IOC 容器中去
本章章节比较易懂, 这里主要讲讲没这么提及的FactoryBean。
FactoryBean :
FactoryBean 从命名上看跟 BeanFactory 很容易混淆。 FactoryBean 是 Spring 提供的一种可以扩展容器对象实例化逻辑的接口, 这个命名主语是Bean,定语是Factory; 也就是说它是 Spring 管理的一个普通的Bean, 只是它相对于生产对象来说,它是一个工厂。
1 | <bean class="com.liam.learn.ioc.factorybean.DateWithFactoryBean" id="dateWithFactoryBean"> |
获取FactoryBean 的方法
1 | public static void main(String[] args) { |
BeanFactory 中的 getObjectForBeanInstance 方法
1 | protected Object getObjectForBeanInstance( |