Spring和SpingBoot中的ApplicationContext

ApplicationContext介绍

applicationContext即应用程序上下文。也就是我们常说的spring容器,只不过在spring容器的基础之上还提供了一些其他的功能。我们可以根据下图ApplicationContext接口注释上先从宏观上梳理下ApplicationContext的主要功能。

1.首先当然是最重要的作为spring的容器,可以访问应用的各个组件,该功能继承自ListableBeanFactory接口。
2.能够加载资源文件,该功能继承自ResourceLoader接口
3.能够发布事件到已经注册好的监听器上,该功能继承自ApplicationEventPublisher接口
4.能够解析消息,支持国际化。该功能继承自MessageSource接口。
5.对于web应用:每个servlet都有一个自己的context,继承自父context。其中父context可以供整个web程序使用。对于单个servlet的子context,在对应servlet中优先使用。
6.再根据ApplicationContext继承了EnvironmentCapable接口可知:ApplicationContext还能够获取对应环境变量与系统变量(但springboot实际上并不是通过这个接口来获取环境变量的,而是通过SpringApplication自带的方法获取)。

在这里插入图片描述

ApplicationContext的继承关系

首先介绍下两个顶级的接口:

ApplicationContext接口:用于获取属性的接口。
ConfigurableApplicationContext接口:继承了ApplicationContext接口,用于设置属性值的接口。

其次是上面两个接口的实现类,以及扩展接口:

AbstractApplicationContext抽象类:实现以上两个接口的功能,获取以及设置属性值。

WebApplicationContext接口:spring提供的用于创建web应用时获取属性的接口
ConfigurableWebApplicationContext接口:用于设置属性值的接口

WebServerApplicationContext接口:springBoot提供的用于创建web应用时获取属性的接口
ConfigurableWebServerApplicationContext接口:用于设置属性值的接口

ReactiveWebApplicationContext接口:springBoot提供的用于创建reactive应用时获取属性的接口
ConfigurableReactiveWebApplicationContext接口:用于设置属性值的接口

接下来看下AbstractApplicationContext抽象类的子类

一. AbstractRefreshableApplicationContext抽象类的子类
1.AbstractRefreshableConfigApplicationContext抽象类的子类
①AnnotationConfigReactiveWebApplicationContext:实现了ConfigurableReactiveWebApplicationContext

②AbstractXmlApplicationContext抽象类:
Ⅰ.FileSystemXmlApplicationContext
Ⅱ.ClassPathXmlApplicationContext

③AbstractRefreshableWebApplicationContext抽象类:实现了ConfigurableWebApplicationContext接口
Ⅰ.XmlWebApplicationContext
Ⅱ.GroovyWebApplicationContext
Ⅲ.AnnotationConfigWebApplicationContext

以上ApplicationContext只有AnnotationConfigWebApplicationContext以及AnnotationConfigReactiveWebApplicationContext实现了AnnotationConfigRegistry接口

二. GenericApplicationContext的子类
1.GenericXmlApplicationContext

2.StaticApplicationContext
①StaticWebApplicationContext:实现了ConfigurableWebApplicationContext接口

3.GenericWebApplicationContext:实现了ConfigurableWebApplicationContext接口
①ServletWebServerApplicationContext:实现了ConfigurableWebServerApplicationContext接口
Ⅰ.AnnotationConfigServletWebServerApplicationContext
Ⅱ.XmlServletWebServerApplicationContext

4.GenericGroovyApplicationContext

5.AnnotationConfigApplicationContext

6.GenericReactiveWebApplicationContext:实现了ConfigurableReactiveWebApplicationContext
①ReactiveWebServerApplicationContext:实现了ConfigurableWebServerApplicationContext
Ⅰ. AnnotationConfigReactiveWebServerApplicationContext

以上ApplicationContext都因GenericApplicationContext实现了BeanDefinitionRegistry

Spring和SpringBoot一共提供了十余种ApplicationContext,但是实际上在平时的开发中只会用到其中的几种。只需重点掌握常用的几种ApplicationContext即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值