• 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

  • 相关阅读:
    浅谈CLR CTS CLS。。。
    "每日一道面试题".net托管堆是否会存在内存泄漏的情况
    “每日一道面试题”.Net中GC的运行机制
    “每日一道面试题”.Net中所有类的基类是以及包含的方法
    c# 逆波兰式实现计算器
    c#控制台实现post网站登录
    c#读取xml文件
    .net md5
    ado.net知识整理
    第八章:Python高级编程-迭代器和生成器
  • 原文地址:https://www.cnblogs.com/rayallenbj/p/9458668.html
Copyright © 2020-2023  润新知