两个主要的容器:beanFactory 和 ApplicationContext,都可以看成是容器的具体表现形式
beanFactory简单容器,实现了容器的基本功能。
ApplicationContext 应用上下文,容器的高级形态存在。增加了许多面向框架的特性。
一、spring的IOC容器系列
1.spring中有格式各样的IOC容器供用户选择.BeanFactory 作为容器的最顶层的接口,定义了最基本的功能
public interface BeanFactory {
Object getBean(String name) throws BeansException;
<T> T getBean(String name, Class<T> requiredType) throws BeansException;
<T> T getBean(Class<T> requiredType) throws BeansException;
Object getBean(String name, Object... args) throws BeansException;
boolean containsBean(String name);
boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
boolean isTypeMatch(String name, Class<?> targetType) throws NoSuchBeanDefinitionException;
Class<?> getType(String name) throws NoSuchBeanDefinitionException;
String[] getAliases(String name);
}
2.spirng 通过定义BeanDefinition来管理基于spring的应用中的各种对象。beanDefinition抽象了我们对bean的定义.
3.接口设计图1.从beanFactory到HierarchicalBeanFactory到ConfigurableBeanFactory
HierarchicalBeanFactory 增加了 getParentBeanFactory()的接口功能,使beanFactory具有了双亲ioc容器的功能
ConfigurableBeanFactory 增加了对BeanFactory的配置功能
2.从beanFactory 到 ListableBeanFactory 到 ApplicationContext 到 WebApplicationContext 和 ConfigurableApplicationContext
ListableBeanFactory 增加更精确的查找
这里只是接口 的关系,而具体的IOC实现都是在这些接口下实现的。
比如:DefaultListableBeanFactory 是在 ConfigurableBeanFactory上实现的,XMLBeanFactory 是在DefaultListableBeanFactory 基础上扩展的