Spring上下文(ApplicationContext)理解
什么是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)理解相关推荐
- Spring容器和Spring应用上下文的理解
1. 什么是Spring容器?作用是什么? 1.1 什么是Spring容器? Spring容器称为IOC容器,即:控制反转 应用程序里不用再过问对象的创建和管理对象之间的依赖关系了,都让IOC容器给代 ...
- spring学习-ApplicationContext-spring上下文深入理解
4月份开始复习一遍spring相关知识.让自己巩固一下spring大法的深奥益处,所以就看了大佬的博客,转载留下来日后继续研读.认为重点的标记为红色 以下文章内容转载自:http://www.cnbl ...
- 获取Spring上下文(ApplicationContext)的三种方法
原文:https://blog.csdn.net/chenyao1994/article/details/79708496 Spring上下文(ApplicationContext)的获取有三种方式. ...
- 沉淀再出发:Spring的架构理解
沉淀再出发:Spring的架构理解 一.前言 在Spring之前使用的EJB框架太庞大和重量级了,开发成本很高,由此spring应运而生.关于Spring,学过java的人基本上都会慢慢接触到,并且在 ...
- 根据Spring上下文对象xxxContext获得*.properties属性文件中的配置属性值
最近写了一个文件上传和下载的简单测试demo,对于这种需要部署在服务器上的,而不是随便在本机上跑跑的那种,对于上传和下载的目录路径的选择和配置尤为重要,这个不能在代码里面写死,必须是灵活可配置的. 一 ...
- springboot实战 获取spring上下文的4种方式
实际开发中我们经常需要通过spring上下文获取一些配置信息,本文阐述springboot应用获取spring上下文的几种方式. 方式一:实现ApplicationContextAware接口 imp ...
- Spring配置文件applicationContext.xml的两种拆分方式
第一种: 通过web.xml配置加载spring上下文环境,其配置方式如下: web.xml [xhtml] view plain copy <context-param> <par ...
- Spring IOC的理解总结
1.1.IoC是什么 Ioc-Inversion of Control,即"控制反转",不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制, ...
- java 获取上下文_如何获得spring上下文的方法总结
一 前言 打算重温spring,以后可能每周会发一篇吧,有空就搞搞: 二 获取上下文的几种方式 AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中 ...
最新文章
- R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(不同分组配置不同的箱体填充色+灰度尺度图)实战
- vue-quill-editor上传内容由于图片是base64的导致字符太长的问题解决
- 文件和参数一起上传_Spring boot的文件上传
- php跳出volist,thinkphpvolist
- python实验指导书2018_python实验指导书
- 苹果应用上架,一些信息的勾选(2017年4月27日)
- GATK之VariantAnnotator
- 中国水银矿石行业市场供需与战略研究报告
- 实习成长之路:MySQL十:怎么给字符串字段加索引?
- php中的钩子理解及应用
- 设计模式学习02-观察者模式
- Docker入门之安装与卸载
- python字节码解析_dis --- Python 字节码反汇编器 — Python 3.9.1 文档
- FPGA实现FIR滤波器
- 个人用游戏设计框架图
- IDEA社区版下载与安装详细教程
- 利器 | Terminal Shell 改造记录 Windows Terminal + ZSH + Tmux
- 【MySQL】MySQL 存储引擎、索引、锁、集群
- jvm-10 垃圾回收3-垃圾回收器
- 算法设计与分析第二章作业
热门文章
- 解决Win10安装USBasp驱动时,因为INF不包含数字签名信息安装失败的问题
- java程序设计清考_面向对象程序设计(Java)-题库
- win32 hook 详解
- 如何PHP给人生日祝福,给自己的生日祝福说说 幽默的祝别人生日快乐
- 美国高考SAT数学新政介绍
- UML建模工具Rose与PowerDesigner,两款建模工具的对比
- 鸿蒙os将用在哪款机型,4月份正式开始,鸿蒙OS即将推送,14款荣耀机型在列,太感动了!...
- java-Usb接口
- raspberry pi_如何在Raspberry Pi上创建盒装Internet
- 生态园林景观网站搭建模板