servletcontext这里有配置文件的参数等信息,还有bean之间的关联关系,并且把这种关联关系封装成map(把webapplicationcontext放入)
srping webapplicationcontext
ContextLoaderListener:
@Override
public void contextInitialized(ServletContextEvent event) {
initWebApplicationContext(event.getServletContext());
}
//生成webapplicationcontext并放入servletcontext
public WebApplicationContext initWebApplicationContext(ServletContext servletContext) {
if (servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE) != null) {
throw new IllegalStateException(
"Cannot initialize context because there is already a root application context present - " +
"check whether you have multiple ContextLoader* definitions in your web.xml!");
}
Log logger = LogFactory.getLog(ContextLoader.class);
servletContext.log("Initializing Spring root WebApplicationContext");
if (logger.isInfoEnabled()) {
logger.info("Root WebApplicationContext: initialization started");
}
long startTime = System.currentTimeMillis();
try {
// Store context in local instance variable, to guarantee that
// it is available on ServletContext shutdown.
if (this.context == null) {
this.context = createWebApplicationContext(servletContext);
}
if (this.context instanceof ConfigurableWebApplicationContext) {
ConfigurableWebApplicationContext cwac = (ConfigurableWebApplicationContext) this.context;
if (!cwac.isActive()) {
// The context has not yet been refreshed -> provide services such as
// setting the parent context, setting the application context id, etc
if (cwac.getParent() == null) {
// The context instance was injected without an explicit parent ->
// determine parent for root web application context, if any.
ApplicationContext parent = loadParentContext(servletContext);
cwac.setParent(parent);
}
configureAndRefreshWebApplicationContext(cwac, servletContext);
}
}
servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, this.context);
ClassLoader ccl = Thread.currentThread().getContextClassLoader();
if (ccl == ContextLoader.class.getClassLoader()) {
currentContext = this.context;
}
else if (ccl != null) {
currentContextPerThread.put(ccl, this.context);
}
if (logger.isDebugEnabled()) {
logger.debug("Published root WebApplicationContext as ServletContext attribute with name [" +
WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE + "]");
}
if (logger.isInfoEnabled()) {
long elapsedTime = System.currentTimeMillis() - startTime;
logger.info("Root WebApplicationContext: initialization completed in " + elapsedTime + " ms");
}
return this.context;
}
catch (RuntimeException ex) {
logger.error("Context initialization failed", ex);
servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, ex);
throw ex;
}
catch (Error err) {
logger.error("Context initialization failed", err);
servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, err);
throw err;
}
}
相关推荐
用excel制作排序动画算法vba源码
ACM、NOI 和 CSP 比赛的经验,基本背景介绍
本项目是一个基于Spring Boot和Vue.js的候鸟监测数据管理系统,旨在提供一个高效、便捷的平台,用于收集、存储、分析和展示候鸟迁徙数据。项目的主要功能包括实时数据采集、数据分析、数据可视化以及用户管理。通过使用Spring Boot框架,后端实现了强大的数据处理能力和稳定的API服务,确保了系统的高性能和高可用性。前端则采用Vue.js框架,提供了友好的用户界面和流畅的用户体验。 系统能够实时接收来自不同监测点的数据,并通过大数据分析技术,自动识别候鸟的种类和迁徙路径。数据分析模块还提供了多种统计图表,帮助研究人员直观地理解数据背后的趋势和模式。此外,系统还具备用户权限管理功能,确保不同级别的用户只能访问相应的功能和数据。 开发此项目的目的是为了满足学术研究和实际应用的需求,同时为计算机相关专业的学生提供一个完整的实战案例,帮助他们更好地理解和应用现代软件开发技术。
基于SSM的毕业设计源码
基于SSM的毕业设计源码
基于SSM的毕业设计源码
基于SSM的毕业设计源码
图像对抗样本检测综述
基于springboot的毕业设计源码
技术资料分享STM32F102x8B_DS_CH_V2很好的技术资料.zip
技术资料分享sd卡协议(物理层)很好的技术资料.zip
基于SSM的毕业设计源码
内容概要:当遇到‘pip install xxx’命令时出现 SyntaxError: invalid syntax 错误时,文中总结了多个可能的原因以及解决方案,包括确认命令执行环境、Python 与 pip 版本一致性检查、正确安装 pip、确保命令格式无误、使用虚拟环境规避版本冲突、合理使用代理与镜像源加快下载等问题。 适合人群:适用于有一定 Python 开发经验,尤其是经常需要利用 pip 安装外部库的技术工作者。 使用场景及目标:旨在帮助开发者快速诊断并修复在 pip 安装过程中可能出现的各种 SyntaxError 类型的异常,提高工作效率和项目稳定性。 其他说明:文档还提供了几个典型的报错实例及其对应的解决策略,有助于深入理解常见问题背后的具体机制。同时强调,在解决问题前要先排除自身操作失误的可能性,比如是否不小心在 Python 解释器内部运行了本来应当在外壳命令行下执行的操作等基本常识点也是不可忽视的重要方面。
mysql安装
map_mode_escape_1.28.13.12700.pak
一、系统说明 基于springboot开发的轻量级单体架构购物商城网站,并分为用户、商户、后台三大模块。基于springboot开发的轻量级单体架构购物商城网站,并分为用户、商户、后台三大模块。 用户模块能够进行商品搜索浏览、在线下单、微信支付等功能; 商户模块则可以对收益情况以及订单成交情况进行查看、并且可对商品进行上下架和增加删除等操作; 后台模块可进行群发消息通知、RBAC权限管理、商户的停用启用以及商城的广告海报设置等功能 二、功能描述 1、前台模块 登录页面 商城主页 我的账户 系统消息 购买记录 购物车 商品详情 店铺页面 搜索结果 下单页面 支付页面 商户主页 店铺相关 商品相关 优惠相关 会员相关 订单相关 2、后台模块 登录页面 后台主页 广告设置 订单列表 商户相关 会员相关 权限管理等
macOS_Sequoia_15.1.password(imacos.top).rdr.split.019
【课程大纲】 第1章 初始MySQL 共19页.pptx 第2章 MySQL的安装与配置 共14页.pptx 第3章 数据库的基本操作 共11页.pptx 第4章 数据表的基本操作 共26页.pptx 第5章 数据类型和运算符 共17页.pptx 第6章 MySQL函数 共76页.pptx 第7章 查询数据 共48页.pptx 第8章 插入、更新与删除数据 共10页.pptx 第9章 索引 共11页.pptx 第10章 存储过程和函数 共19页.pptx 第11章 视图 共20页.pptx 第12章 触发器 共11页.pptx 第13章 用户管理 共25页.pptx 第14章 数据备份与还原 共21页.pptx 第15章 MySQL日志 共22页.pptx 第16章 性能优化 共18页.pptx 第17章 MySQL Workbench5.2 的使用 共15页.pptx 第18章 MySQL Replication 共27页.pptx 第19章 MySQL Cluster 共49页.pptx 第20章 MySQL管理利器——MySQL Utilities 共5页.pptx 第21章 读写分离的利器——MySQL Proxy 共5页.pptx 第22章 PHP操作MySQL数据库 共7页.pptx 第23章 新闻发布系统数据库设计 共6页.pptx 第24章 论坛管理系统数据库设计 共6页.pptx
内容概要:本文档详述了HBase的安装流程及基本操作方法,涵盖安装的前提条件、具体步骤和常用数据处理操作,帮助开发者理解和掌握HBase的使用技巧。 适合人群:对NoSQL数据库感兴趣的软件开发者和技术爱好者。 使用场景及目标:适用于希望部署个人开发测试环境,或在小规模生产环境中采用HBase作为数据存储解决方案的技术人员。 其他说明:文档不仅介绍了如何安装配置HBase,还展示了HBase命令行界面的基本操作,如创建、插入、检索、更新和删除记录等功能。
本项目是一个基于Spring Boot和Vue的家政预约平台设计与实现,旨在提供一个高效、便捷的家政服务预约系统。项目的主要目标是通过现代化的技术手段,优化家政服务的预约流程,提升用户体验,并为家政服务提供者提供一个管理订单和客户信息的有效工具。 在功能方面,该平台允许用户浏览不同类型的家政服务,如保洁、月嫂、家教等,并根据需求进行在线预约。系统支持用户注册与登录,个性化服务推荐,以及预约确认和支付功能。此外,家政服务提供者可以通过后台管理系统查看和处理预约请求,管理个人信息和服务介绍。 技术实现上,后端采用Spring Boot框架,确保系统的稳定性和高效性,前端则使用Vue.js构建用户友好的界面。这种前后端分离的架构设计不仅提高了开发效率,也便于系统的维护和升级。 本项目的开发不仅是为了完成一项毕业设计,更是为了通过实际操作加深对Java及相关Web开发技术的理解,适合计算机相关专业学生及Java学习者作为实战练习的项目。