当前位置: 首页 > news >正文

spring与springmvc整合


文章目录

    • spring与springmvc整合
      • 重复创建bean
      • 容器关系
      • 获取spring容器上下文


spring与springmvc整合

在项目中使用springmvc的时候,由于spring和springmvc是同源的,有时候大家会把所有的配置都扔到springmvc的配置文件中,而不去区分spring和springmvc的配置,而我习惯于把两个配置拆分开来,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容器上下文

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

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

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

req.getServletContext()

然后取出来即可

context.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)

参考文献

  • spring与springmvc整合

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Stable Diffusion 使用详解(13)--- 3D纹理增强
  • 【Qt笔记】QTabWidget控件详解
  • 【我的 PWN 学习手札】House of Botcake —— tcache key 绕过
  • 量化交易----数据透视表----融资融券优惠代码
  • 前端三大框架 Vue、React 和 Angular 的市场占比分析
  • 【AI】简单了解AIGC与ChatGPT
  • Rocky Linux 9 中添加或删除某个网卡的静态路由的方法
  • Vue使用Vue Router路由:通过URL传递与获取参数
  • 内网穿透(当使用支付宝沙箱的时候需要内网穿透进行回调)
  • 【MySQL】库的相关操作
  • Vxe UI vue vxe-table 实现自适应列宽,根据内容自适应列的宽度
  • ES 索引或索引模板
  • 第五章 继承、多态、抽象类与接口 (5)
  • Webpack 和 Rollup、Parcel 区别
  • C++vector类的模拟实现
  • [译]CSS 居中(Center)方法大合集
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • canvas 绘制双线技巧
  • Electron入门介绍
  • java8-模拟hadoop
  • Js基础知识(一) - 变量
  • PermissionScope Swift4 兼容问题
  • php中curl和soap方式请求服务超时问题
  • Sass 快速入门教程
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • vue 个人积累(使用工具,组件)
  • Vue2 SSR 的优化之旅
  • 电商搜索引擎的架构设计和性能优化
  • 汉诺塔算法
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 深入浅出Node.js
  • 使用parted解决大于2T的磁盘分区
  • 手机app有了短信验证码还有没必要有图片验证码?
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • ​插件化DPI在商用WIFI中的价值
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #pragma once
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (30)数组元素和与数字和的绝对差
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (Java)【深基9.例1】选举学生会
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (翻译)terry crowley: 写给程序员
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (三)docker:Dockerfile构建容器运行jar包
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)