1. 概述
在Spring IOC
容器设计中,有两个主要的容器系列,一个是实现BeanFactoreny
接口的简单容器,他定义了IOC
容器的基本功能规范;一个是ApplicationContext
应用上下文,他作为容器的高级形态而存在,增加了许多面向框架的特性;除此之外还有其他许多IOC容器;
既然有了容器,自然也要有容器中的核心数据,在Spring
提供的基本IOC容器接口的定义和实现的基础上,Spring定义了BeanDefinition
来抽象对于Bean
的定义,也就是容器实现依赖反转的核心数据结构
BeanFactory -> HierarchicalBeanFactory -> ConfigurableBeanFactory
这是一个条主要的设计路径。 BeanFactory
中定义了基本的IOC
容器规范,在HierarchicalBeanFactory
接口中增加了getparantBeanFactory()
的接口功能,使BeanFactory
具备了双亲IOC
容器的管理功能,在ConfigurableBeanFactory
主要定义了一些对BeanFactory
的配置功能
BeanFaactory -> ListableBeanFactory -> ApplicationContext -> WebApplicationCotext / ConfigurableApplicationContxt
在BeanFactory
简单接口的基础上增加了对高级容器的特性支持
2. BeanFactory
BeanFactory
接口定义了基本的IOC容器规范,XmlBeanFactory
,AppicationContext
等都是容器某种功能的具体实现
public interface BeanFactory {
//对FactoryBean的转义定义,因为如果使用bean的名字检索FactoryBean得到的对象是工厂生成的对象,
//如果需要得到工厂本身,需要转义
String FACTORY_BEAN_PREFIX = "&";
//根据bean的名字,获取在IOC容器中得到bean实例
Object getBean(String name) throws BeansException;
//根据bean的名字和Class类型来得到bean实例,增加了类型安全验证机制。
Object getBean