spring与springmvc整合

news/2024/9/20 7:40:55 标签: spring, springmvc

文章目录


springspringmvc_9">springspringmvc整合

在项目中使用springmvc的时候,由于springspringmvc是同源的,有时候大家会把所有的配置都扔到springmvc的配置文件中,而不去区分springspringmvc的配置,而我习惯于把两个配置拆分开来,spring来配置数据源、事务以及和其他框架的整合,springmvc来配置web相关的一些配置。

在这里给大家说明一下两者配置整合时可能会遇到的一些问题

之前在 web应用使用spring 一节中说过如何在web应用中加载spring容器,使用的是是监听器,这里就不赘述了,可以去搜一下之前的文章

重复创建bean

springmvc的配置文件和spring的配置文件分离的时候,由于现在使用注解的比较多,大多都是用组件扫描,

如果两个配置文件都使用<context:component-scan base-package=“com.zhanghe.study.springmvc”/>来进行组件扫描的话,会导致两个配置文件都扫一遍这些组件,这些bean都会创建两次

这时候就用到了<context:exclude-filter>和<context:include-filter>来进行设置过滤了

springmvc只需要管控制器Controller就可以了,所以在springmvc的配置文件中配置

<context:component-scan base-package="com.zhanghe.study.springmvc" use-default-filters="false">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

spring的配置文件中只需要相应的排除掉springmvc扫描的

<context:component-scan base-package="com.zhanghe.study.springmvc">
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

容器关系

springmvc容器是spring容器的子容器,springmvc容器可以访问spring容器中的bean,反之则不行

spring_46">获取spring容器上下文

在项目启动的时候,监听器中会在web应用环境初始化的时候将spring的上下文内容存在应用上下文中

servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, this.context);

所以在取出来时只需要获取到应用上下文

req.getServletContext()

然后取出来即可

context.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)

参考文献


http://www.niftyadmin.cn/n/5666832.html

相关文章

电气自动化入门03:安全用电

视频链接&#xff1a;2.1 电工知识&#xff1a;触电原因与防触电措施_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1PJ41117PW/?p4&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.电流对人体的危害 电击&#xff1a;电流通过人体。 电伤&#xff1a;电流热效应…

C++中move和forword的区别

首先说结论&#xff1a; move用于将一个对象的资源所有权从一个对象转移到另一个对象&#xff0c;以避免不必要的复制。它是一种类型转换&#xff0c;表示你希望将一个对象视为一个右值&#xff0c;从而可以被“移动”而不是“复制”。 forward用于完美转发模板参数。它确保在将…

使用NumPy进行矩阵运算:编写高效的Python函数

使用NumPy进行矩阵运算:编写高效的Python函数 在数据科学、机器学习和科学计算领域,矩阵运算是非常常见的操作。NumPy是Python中最流行的科学计算库之一,提供了强大的矩阵运算功能。本文将详细介绍如何使用NumPy编写一个高效的矩阵运算函数,并展示一些常见的矩阵运算操作。…

问:说说notify()和notifyAll()有什么区别?

notify() 和 notifyAll() 是 Java 中用于线程间通信的方法&#xff0c;这两个方法都用于唤醒正在等待 (wait()) 的线程。然而&#xff0c;它们在工作方式和应用场景上有一些重要的区别。 notify() vs notifyAll() notify(): 唤醒一个正在等待 (wait()) 的线程。如果有多个线程…

使用Python-pptx轻松搜索和替换PPT中的文本

哈喽,大家好,我是木头左! 本文将详细介绍如何使用Python-pptx来搜索并替换PPT文档中的特定文本。 安装Python-pptx库 确保你已经安装了Python-pptx库。如果没有,可以通过以下命令进行安装: pip install python-pptx导入所需模块 在开始编写代码之前,需要导入Python-p…

苹果CMS插件:优化蜘蛛访问内容,提升百度收录率

确保蜘蛛抓取原始内容 专为苹果CMS设计的广告管理插件&#xff0c;能够智能识别搜索引擎蜘蛛与普通访客&#xff0c;确保蜘蛛访问时展示原始内容&#xff0c;从而提升被百度等搜索引擎收录的几率。 广告显示提升收益 对于普通访客&#xff0c;该插件则优先显示广告内容&#…

记一次键盘f2和f5键被自动触发情况

背景&#xff1a; 联想小新笔记本电脑内置键盘&#xff0c;其中f2键和f5键一直被自动触发&#xff0c;已尝试过更换输入法&#xff0c;重装系统&#xff0c;拆开键帽清灰依旧无效。考虑维修费或者更换键盘&#xff08;内置&#xff09;费都挺贵的&#xff0c;而且f2和f5作用也…

Nginx从入门到入土(三): 静态资源管理与代理服务

软负载和硬负载的区别 软负载均衡是通过在服务器上运行的软件应用程序来实现负载均衡的。这些软件可以是开源的&#xff0c;如Nginx、HAProxy&#xff0c;也可以是商业产品。 工作原理&#xff1a; 运行环境&#xff1a; 软件负载均衡器通常运行在标准的物理服务器或虚拟机上…