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( |