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

  • 相关阅读:
    单机安装hadoop+hive+presto
    java ListMap使用多个key比较
    java多线程-3-使用多线程的时机
    java多线程-2-概念和实现机制
    mysql的varchar和oracle的varchar2比较
    js-对象创建
    java关于json的一些问题
    spring使用RedisCacheManager管理key的一些问题
    如何提高工作效率
    关系数据库之-事务
  • 原文地址:https://www.cnblogs.com/rayallenbj/p/9458668.html
Copyright © 2011-2022 走看看