springMVC-与spring整合

一、基本介绍

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

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

二、具体做法

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

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

XML 复制代码
<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, 配置如下

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下), 配置如下

XML 复制代码
<!--配置自动扫描包-->
    <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

相关推荐
一只小小Java8 小时前
Naocs本地部署&安装3.2.3+Spring boot 3.2.0
java·spring boot·后端·nacos
JL158 小时前
Spring Boot vs Gin:Java 人搭第一个 Go REST API
java·spring boot·gin
神明不懂浪漫9 小时前
【第七章】Java中的常用类
java·开发语言·前端·经验分享·笔记
Jelena1577958579218 小时前
电商运营分析数据比价接口实战:多平台价格监控与智能决策系统
java·大数据·数据库
神明不懂浪漫19 小时前
【第五章】Java中的继承与多态
java·开发语言
AI多Agent协作实战派21 小时前
AI多Agent协作系统实战(十七):凌晨4点,我的AI系统在“假装工作“——3个bug同时爆炸的5小时
java·前端·bug
gaolei_eit21 小时前
Java+Ai+vue
java·spring·maven
qq_25183645721 小时前
基于java Web 动漫视频网站毕业论文
java·开发语言·前端
LayZhangStrive21 小时前
JUC相关的函数、注解、变量杂记
java·面试·多线程·juc
玉&心21 小时前
关于配置mcp服务端sse-message-endpoint和sse-endpoint的注意点
spring·springai·mcp