当前位置: 首页 > 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整合
http://www.lryc.cn/news/444672.html

相关文章:

  • 如何使用Optuna在PyTorch中进行超参数优化
  • 2.Spring-容器-注入
  • 在uboot中添加自定义命令
  • AngularJS 模块
  • [yotroy.cool] MGT 388 - Finance for Engineers - notes 笔记
  • 2024年9月python二级易错题和难题大全(附详细解析)(三)
  • 【LLM多模态】Animatediff文生视频大模型
  • PDB数据库中蛋白质结构文件数据格式
  • C++自动驾驶面试核心问题整理
  • 2024寻找那些能精准修改PDF内容的工具
  • POI操作EXCEL增加下拉框
  • 新手教学系列——基于统一页面的管理后台设计(二)集成篇
  • 计算机毕业设计之:基于微信小程序的疫苗预约系统的设计与实现(源码+文档+讲解)
  • Redis事务总结
  • 1.4 MySql配置文件
  • 前后端分离集成CAS单点登录
  • 全栈开发(四):使用springBoot3+mybatis-plus+mysql开发restful的增删改查接口
  • 计算机组成原理==初识二进制运算
  • 【machine learning-十-grading descent梯度下降实现】
  • python网络游戏
  • 使用Charles抓包Android App数据
  • 通信工程学习:什么是VM虚拟机
  • C#环境搭建和入门教程--vs2022之下
  • 自定义类型
  • 数仓项目环境搭建
  • Vue3(二)计算属性Computed,监视属性watch,watchEffect,标签的ref属性,propos属性,生命周期,自定义hook
  • 栈:只允许在一端进行插入或删除操作的线性表
  • spring boot 热部署
  • 携手阿里云CEN:共创SD-WAN融合广域网
  • kettle从入门到精通 第八十七课 ETL之kettle kettle文件上传