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

springMVC-与spring整合

一、基本介绍        

        在项目开发中,spring管理的 Service和 Respository,SrpingMVC管理 Controller和ControllerAdvice,分工明确

当我们同时配置application.xml,    springDispatcherServlet-servlet.xml , 那么注解的对象会被创建两次, 故一定要区别开

二、具体做法

1、写好注解, @Repository @Service @ Controller ,看图

2、在web.xml中配置spring(包括spring的加载监听器), springMVC各自的配置文件

<web-app>
<!--  配置spring--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param>
<!--  配置spring的加载监听器-->
<!--  在启动Web容器时,自动装配applicationContext.xml的配置信息--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><servlet><servlet-name>springDispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--    假如不在默认位置(WEB-INF下,默认名称必须是 springDispatcherServlet-servlet.xml),
可以使用以下代码自定义--><!--    <init-param>--><!--      <param-name>contextConfigLocation</param-name>--><!--      <param-value>classpath:WEB-INF/springDispatcherServlet-servlet.xml</param-value>--><!--    </init-param>--><!--    表示tomcat加载servlet的顺序,数字越小越先加载--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springDispatcherServlet</servlet-name><!--    这里注意这种url请求形式配置成/这样支持restfulT--><url-pattern>/</url-pattern></servlet-mapping></web-app>

3、在applicationContext.xml, 配置如下

<context:component-scan base-package="com.bin.springMVC.*"><context:exclude-filter type="annotation"expression="org.springframework.stereotype.Controller"/><context:exclude-filter type="annotation"expression="org.springframework.web.bind.annotation.ControllerAdvice"/></context:component-scan>

4、在 springDispatcherServlet-servlet.xml (注意必须是这个名字,第一段可改,如果不指定位置,那么spirngMVC的配置文件的位置必须在WEB-INF下), 配置如下

<!--配置自动扫描包--><context:component-scan base-package="com.bin.springMVC.*" use-default-filters="false"><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/><context:include-filter type="annotation"expression="org.springframework.web.bind.annotation.ControllerAdvice"/></context:component-scan>
<!--配置用 InternalResourceViewResolve如果我们在目标方法返回一个"loginoK”则真实的资源就是prefix/名字/suffixloginOK => /WEB-INF/pages/loginOk.jsp-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".jsp"/></bean>
<!--    加入两个常规配置,才会加载.js .css文件--><mvc:annotation-driven></mvc:annotation-driven><mvc:default-servlet-handler/>

5、效果,启动项目后,各个注解的对象只被创建一次

三、bean的引用

注意bean的相互引用关系, 即controller会引用  service , 但service不会去引用controller

相关文章:

  • Kafka日志
  • 编写一个Java程序,其中包含三个线程: 厨师(Chef)、服务员(Waiter)和顾客(Customer)
  • docker安装的php 在cli中使用
  • 构建数字化金融生态系统:云原生的创新方法
  • pycharm修改项目文件夹名称
  • PostGreSQL:货币类型
  • hiveserver负载均衡配置
  • cpp_05_类_string类
  • Vue3 性能优化
  • Java 解决远程调用 ssl 证书认证问题
  • 智能优化算法应用:基于鹈鹕算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • 探索微软Edge:使用方法和心得分享
  • 【快速开发】使用SvelteKit
  • Django Rest Framework框架的安装
  • ChatGPT免费 | 8个免费使用GPT-4的方法
  • 230. Kth Smallest Element in a BST
  • If…else
  • LeetCode29.两数相除 JavaScript
  • Linux Process Manage
  • nfs客户端进程变D,延伸linux的lock
  • Python打包系统简单入门
  • React系列之 Redux 架构模式
  • SQL 难点解决:记录的引用
  • Vim 折腾记
  • Vue2 SSR 的优化之旅
  • 测试如何在敏捷团队中工作?
  • 构建工具 - 收藏集 - 掘金
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 中文输入法与React文本输入框的问题与解决方案
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 带你开发类似Pokemon Go的AR游戏
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • # 安徽锐锋科技IDMS系统简介
  • #includecmath
  • #pragma data_seg 共享数据区(转)
  • (16)Reactor的测试——响应式Spring的道法术器
  • (2)(2.10) LTM telemetry
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (MATLAB)第五章-矩阵运算
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET CF命令行调试器MDbg入门(一)
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .net framework 4.0中如何 输出 form 的name属性。
  • .net MySql
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .NET6实现破解Modbus poll点表配置文件
  • .Net的C#语言取月份数值对应的MonthName值