spring framework IoC 容器接口体系结构概述

org.springframework.beans 和 org.springframework.context 包是 Spring Framework 的 IoC 容器的基础。
这里需掌握两个体系结构,BeanFactory 和 ApplicationContext。

BeanFactory体系结构

在这里插入图片描述

BeanFactory 主要接口,可分为三级:

  1. BeanFactory 是顶层容器,定义了所有 IoC 容器 必须遵从的原则,定义获取 bean 及 bean 的provider、类型、别名等信息 ;
  2. 有3个子接口继承了它,进行不同功能上的增强,为二级接口;
  • HierarchicalBeanFactory:父子层次容器,增加了对 parentFactory 的 支持
  • AutowireCapableBeanFactory:自动装配bean容器,提供创建 bean、自动注入、初始化以及应用 bean 的后处理器,为第三方框架赋能
  • ListableBeanFactory:可枚举bean容器,根据各种条件获取 bean 的配置清单
  1. 三级接口是对二级接口的综合
  • ConfigurableBeanFactory:复杂配置的容器,提供配置 Factory 的各种方法
  • ConfigurableListableBeanFactory:完整功能的容器

BeanFactory 主要实现类:

  • AbstractBeanFactory:抽象工厂类,主要提供了这样的三个功能: 别名管理,单例创建与注册,工厂方法FactoryBean支持;
  • AbstractAutowireCapableBeanFactory:抽象工厂类,主要功能是bean的创建;
  • DefaultListableBeanFactory:具备全部功能的BeanFactory的默认实现,AbstractApplicationContext#refresh()方法中创建的容器类型。

BeanFactory 相关接口和实现类:

  • SingletonBeanRegistry:定义对单例的注册及获取
  • AliasRegistrγ:定义对 alias 的简单增删改等操作
  • BeanDefinitionRegistry:定义对 BeanDefinition 的各种增删改操作
  • SimpleAliasRegistry:主要使用 map 作为 alias 的缓存,并对接口 AliasRegistry 进行 实现
  • DefauItSingletonBeanRegistry:对接口 SingletonBeanRegistry各函数的实现
  • FactoryBeanRegistrySupport:在 DefaultSingletonBeanRegistry 基础上增加了对 FactoryBean 的特殊处理功能

主要知识点

在上述内容中,涉及的知识点主要有:bean的加载过程(生命周期)自动装配bean的循环依赖(三级缓存),BeanFactory和FactoryBean的区别。

ApplicationContext体系结构

ApplicationContext的接口及实现主要分两条线,非web的和web的,如下图所示
在这里插入图片描述

ApplicationContext 主要接口,可分为三级:

  1. 一级接口:ApplicationContext
  • EnvironmentCapable:可配置Environment
  • ListableBeanFactory:前面有介绍:可将Bean逐一列出的工厂
  • HierarchicalBeanFactory:前面有介绍:分层的工厂
  • MessageSource:可管理message实现国际化等功能
  • ApplicationEventPublisher:可publish事件,调用Listener
  • ResourcePatternResolver:加载pattern指定的资源
  1. 二级接口:WebApplicationContext、ConfigurableApplicationContext
  • WebApplicationContext:web环境的Context
  • ConfigurableApplicationContext:可配置的应用上下文
  1. 三级接口:ConfigurableWebApplicationContext
    并没有定义太多的操作,主要是Servlet上下文及配置文件。

二级接口主要实现类(非web):

  1. AbstractApplicationContext:实现了该接口的大部分功能;
  2. AbstractRefreshableApplicationContext和GenericApplicationContext
    • GenericApplicationContext 通用的应用上下文(请注意:它已经不是抽象类,可以直接使用了)
    • AbstractRefreshableApplicationContext:实现了父类的方法refreshBeanFactory(),执行BeanFactory的“刷新”。
  3. AbstractRefreshableConfigApplicationContext:这里它有两个比较典型的实现类:
    • FileSystemXmlApplicationContext:taking the context definition files from the file system or from URLs
    • ClassPathXmlApplicationContext:taking the context definition files from the class path

三级接口主要实现类(web):

  1. 抽象实现类:AbstractRefreshableWebApplicationContext
  2. 实现类:
    • XmlWebApplicationContext
    • GroovyWebApplicationContext
    • AnnotationConfigWebApplicationContext

主要知识点:

在上述内容中,涉及的知识点主要有:refresh 方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值