zoukankan      html  css  js  c++  java
  • IoC容器设计

    本文主要摘录于  Spring技术内幕-深入即系Spring架构和设计原理(许文柯著)。

    IoC是根据两个核心BeanFactory和ApplicationContext来设计的,这里先放一张Spring IoC容器的接口设计图:

    主要由两条设计主线:

    1、BeanFactory:定义了基本IoC容器规范getBean()

    <-HierarchicalBeanFactory:具备了双亲IoC容器的管理功能getParentBean()

    <-ConfigurableBeanFactory:主要定义了一些对BeanFactory的配置功能,如setParentBean()设置双亲IoC容器,addBeanPostProcessor()配置Bean的后置处理器

    2、BeanFactory

    <-ListableBeanFactory:细化了许多BeanFactory的功能,比如定义了getBeanDefinitionNames()

    <-ApplicationContext:通过继承MessageSource、ResourceLoader、ApplicationEventPublisher等接口添加了许多对高级容器的特性的支持

    <-WebApplicationContext

    BeanFactory的使用场景和设计原理:

    基本的IoC容器的实现就是实现了ConfigurableBeanFactory,从而成为一个简单的IoC 容器。像XmlBeanFactory就是在DefaultListableBeanFactory的基础上进行的扩展,以XmlBeanFactory为例:

    AbstractBeanFactory<-AbstractAutowireCapableBeanFactory<-DefaultListableBeanFactory<-XmlBeanFactory.

    在Spring中,DefaultListableBeanFactory是作为一个默认的功能完整的IoC容器来进行使用的,它可以算是一个容器的基本产品。

    ApplicationContext的使用场景和设计原理:

    因为ApplicationContext具备了非常丰富的附加功能,所以一般建议在开发应用时使用ApplicationContext作为IoC容器的基本形式,我们以FileSystemXmlApplicationContext为例:

    AbstractApplicationContext<-AbstractRefreshableApplicationContext<-AbstractRefreshableConfigApplicationContext<-AbstractXmlApplicationContext<-FileSystemXmlApplicationContext

  • 相关阅读:
    线程执行器(一)
    修改锁的公平性
    Spark学习视频整合
    使用读写锁实现同步数据访问
    使用锁实现同步
    使用工厂类创建线程
    线程的分组
    android手机状态解释,比方android.os.Build.VERSION.SDK
    Android-Dalvik指令集
    selenium使用Xpath定位之完整篇
  • 原文地址:https://www.cnblogs.com/rayallenbj/p/9458668.html
Copyright © 2011-2022 走看看