Spring BeanFactory 和ApplicationContext接口

        Spring 通过xml配置文件描述bean直接的依赖关系,利用反射技术实例化bean并建立bean之间的依赖。Spring DI容器在这个基础上 实现 bean的缓存  事务 代理 生命周期 等高级服务;IOC中最核心的接口是Beanfactory提供IOC的高级服务,而ApplicationContext是建立在BeanFactory基础之上提供抽象的面向应用的服务。

  1. BeanFactory 体系结构

    Spring BeanFactory 和ApplicationContext接口_第1张图片


从beanfactory的体系结构体系结构图可以看出,beanFactory 功能在不同的接口中不断的扩展,下面对主要几个接口的功能进行说明:

             1.beanFactory 最顶层的接口,主要提供getBean(String beanName)方法 获取bean

            2.ListableBeanFactory  该接口定义访问容器中bean的相关方法 如 容器中bean的个数  某个指定bean在容器中的配置名称    以及容器是否包含某个bean 等方法

             3.ConfigurableBeanFactory  增强ioc容器的可定制性 如属性编辑器,容器初始化后置处理器等等方法

              4. AutowireCapableBeanfactory  支持bean自动装载  如 按包扫描等等 注解bean 等等

             5. SingletonBeanRegistry  定义运行时想容器注册单例的方法

            6.BeanDefinitionRegistry  在spring配置文件xml中 每一个Bean 节点元素在容器中都通过一个BeanDefinition对象表示,该接口提供想容器手工注册BeanDefinition对象的方法。

BeanFactory初始化过程:

Spring为beanFactory提供了多种实现常用的是XmlBeanFactory。beanFactory通过Spring 提供的Resource工具包加载xml配置文件并启动IOC容器。在IOC容器启动的时候并不立即初始化xml中定义的bean,当第一次调用该bean的时候再进行初始化工作(懒加载),同时beanFacotory也会缓存初始化后得bean实例,在之后的调用的时候 直接从缓存中获取。

注: spring 在SingletonBeanRegistry  接口的实现类 DefaultSingletonBeanRegistry 中定义了一个HashMap 实例,以beanname作为key保存实例化后的Bean。

2.ApplicationContext 体系结构

Spring BeanFactory 和ApplicationContext接口_第2张图片

ApplicationContext主要实现类为ClassPathXmlApplicationContext 和FileSystemXmlApplicationContext,同样的ApplicationContext 通过集成多个接口以扩展相应的功能,从上图中可以看到ApplicationContext 同时继承了ListableBeanFactory  和HierarchicalBeanFactory接口,在此基础上也继承了其他接口进一步扩展了Beanfactory的功能呢

        1.ApplicationEventPublisher 让容器拥有发布上下文事件的能力 如容器关闭,启动事件

        2.MessageSource 为容器提供i18n国际化消息访问功能

        3,ResourcepatternResolver 路径匹配解析器 为 容器提供路径解析查询的功能 支持ant风格的路径匹配

        4.LifeCycle 该接口提供 start()和stop()两个方法用于控制异步处理程序,ApplicationContext和和相关具体的bean均要实现该接口,ApplicationContext 通过start/stop 方法将消息传递给所有的实现该接口的bean已达到管理控制jmx 日志调度等目的

ConfigurableApplicationContext 扩展与ApplicationContext接口 提供了refresh()和close()方法,用于在运行时清除缓存重新加载配置信息或者关闭ApplicationContext容器等等 


3.WebApplicationContext


Spring BeanFactory 和ApplicationContext接口_第3张图片


WebApplcationContext 是满足web应用而提供的 WebApplcationContext  和ServletContext可以相互引用以获取多方的功能,另外WebApplcationContext 的作用于又新增了三个作用于 request Session和 global session 三个作用域




你可能感兴趣的:(beanfactory,spring重要接口)