两个主要的容器: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 基础上扩展的

二、接口的实现

三、ApplicationContext的设计原理

IOC的初始化过程

results matching ""

    No results matching ""