什么是Spring应用上下文呢???

什么是应用上下文呢,应用上下文即是Spring容器的一种抽象化表述;而我们常见的ApplicationContext本质上说就是一个维护Bean定义以及对象之间协作关系的高级接口。Spring的核心是容器,而容器并不唯一,框架本身就提供了很多个容器的实现,大概分为两种类型:一种是不常用的BeanFactory,这是最简单的容器,只能提供基本的DI功能;还有一种就是继承了BeanFactory后派生而来的应用上下文,其抽象接口也就是上面提到的的ApplicationContext,它能提供更多企业级的服务,例如解析配置文本信息等等,这也是应用上下文实例对象最常见的应用场景。有了上下文对象,我们就能向容器注册需要Spring管理的对象了。对于上下文抽象接口,Spring也为我们提供了多种类型的容器实现,供我们在不同的应用场景选择——

① AnnotationConfigApplicationContext:从一个或多个基于java的配置类中加载上下文定义,适用于java注解的方式;

② ClassPathXmlApplicationContext:从类路径下的一个或多个xml配置文件中加载上下文定义,适用于xml配置的方式;

③ FileSystemXmlApplicationContext:从文件系统下的一个或多个xml配置文件中加载上下文定义,也就是说系统盘符中加载xml配置文件;

④ AnnotationConfigWebApplicationContext:专门为web应用准备的,适用于注解方式;

⑤ XmlWebApplicationContext:从web应用下的一个或多个xml配置文件加载上下文定义,适用于xml配置方式。

备注:

通过.class文件获取bean的方法:

public abstract class AbstractCreateRoomHandler implements ApplicationContextAware {//存放商家和处理器的映射关系private static final Map<Integer, Class<? extends AbstractCreateRoomHandler>> TYPE_HANDLER = new HashMap<>();private static ApplicationContext applicationContext;static {TYPE_HANDLER.put(BusinessCodeEnum.TUSE.getBusinessCode(), TuSeCreateRoomHandler.class);//todo 新的商家类型添加到此处}public static AbstractCreateRoomHandler getCreateRoomHandler(Integer productType) {Class<? extends AbstractCreateRoomHandler> clazz = TYPE_HANDLER.getOrDefault(productType, TuSeCreateRoomHandler.class);return applicationContext.getBean(clazz);}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {this.applicationContext = applicationContext;}

延伸: 获取bean的集中方法:

Spring上下文(ApplicationContext)理解相关推荐

  1. Spring容器和Spring应用上下文的理解

    1. 什么是Spring容器?作用是什么? 1.1 什么是Spring容器? Spring容器称为IOC容器,即:控制反转 应用程序里不用再过问对象的创建和管理对象之间的依赖关系了,都让IOC容器给代 ...

  2. spring学习-ApplicationContext-spring上下文深入理解

    4月份开始复习一遍spring相关知识.让自己巩固一下spring大法的深奥益处,所以就看了大佬的博客,转载留下来日后继续研读.认为重点的标记为红色 以下文章内容转载自:http://www.cnbl ...

  3. 获取Spring上下文(ApplicationContext)的三种方法

    原文:https://blog.csdn.net/chenyao1994/article/details/79708496 Spring上下文(ApplicationContext)的获取有三种方式. ...

  4. 沉淀再出发:Spring的架构理解

    沉淀再出发:Spring的架构理解 一.前言 在Spring之前使用的EJB框架太庞大和重量级了,开发成本很高,由此spring应运而生.关于Spring,学过java的人基本上都会慢慢接触到,并且在 ...

  5. 根据Spring上下文对象xxxContext获得*.properties属性文件中的配置属性值

    最近写了一个文件上传和下载的简单测试demo,对于这种需要部署在服务器上的,而不是随便在本机上跑跑的那种,对于上传和下载的目录路径的选择和配置尤为重要,这个不能在代码里面写死,必须是灵活可配置的. 一 ...

  6. springboot实战 获取spring上下文的4种方式

    实际开发中我们经常需要通过spring上下文获取一些配置信息,本文阐述springboot应用获取spring上下文的几种方式. 方式一:实现ApplicationContextAware接口 imp ...

  7. Spring配置文件applicationContext.xml的两种拆分方式

    第一种: 通过web.xml配置加载spring上下文环境,其配置方式如下: web.xml [xhtml] view plain copy <context-param> <par ...

  8. Spring IOC的理解总结

    1.1.IoC是什么 Ioc-Inversion of Control,即"控制反转",不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制, ...

  9. java 获取上下文_如何获得spring上下文的方法总结

    一 前言 打算重温spring,以后可能每周会发一篇吧,有空就搞搞: 二 获取上下文的几种方式 AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中 ...

最新文章

  1. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(不同分组配置不同的箱体填充色+灰度尺度图)实战
  2. vue-quill-editor上传内容由于图片是base64的导致字符太长的问题解决
  3. 文件和参数一起上传_Spring boot的文件上传
  4. php跳出volist,thinkphpvolist
  5. python实验指导书2018_python实验指导书
  6. 苹果应用上架,一些信息的勾选(2017年4月27日)
  7. GATK之VariantAnnotator
  8. 中国水银矿石行业市场供需与战略研究报告
  9. 实习成长之路:MySQL十:怎么给字符串字段加索引?
  10. php中的钩子理解及应用
  11. 设计模式学习02-观察者模式
  12. Docker入门之安装与卸载
  13. python字节码解析_dis --- Python 字节码反汇编器 — Python 3.9.1 文档
  14. FPGA实现FIR滤波器
  15. 个人用游戏设计框架图
  16. IDEA社区版下载与安装详细教程
  17. 利器 | Terminal Shell 改造记录 Windows Terminal + ZSH + Tmux
  18. 【MySQL】MySQL 存储引擎、索引、锁、集群
  19. jvm-10 垃圾回收3-垃圾回收器
  20. 算法设计与分析第二章作业

热门文章

  1. 解决Win10安装USBasp驱动时,因为INF不包含数字签名信息安装失败的问题
  2. java程序设计清考_面向对象程序设计(Java)-题库
  3. win32 hook 详解
  4. 如何PHP给人生日祝福,给自己的生日祝福说说 幽默的祝别人生日快乐
  5. 美国高考SAT数学新政介绍
  6. UML建模工具Rose与PowerDesigner,两款建模工具的对比
  7. 鸿蒙os将用在哪款机型,4月份正式开始,鸿蒙OS即将推送,14款荣耀机型在列,太感动了!...
  8. java-Usb接口
  9. raspberry pi_如何在Raspberry Pi上创建盒装Internet
  10. 生态园林景观网站搭建模板