java - SpringMVC Controller配置和事务问题

 胸膛舒畅_736 发布于 2022-11-05 20:18

Java框架: SpringMVC4 , Spring4

Spring配置文件通过web.xml引入

SpringMVC配置文件: app-servlet.xml

    
        
        
    

说明: 配置文件要求Controller类是写在com.xxx.controller包的,并且需要@Controller注解。
此时是可以在正常在Controller中注入IOC提供的service对象,并且有完整的事务,实现数据操作。

问题来了:

我修改了app-servlet.xml,把base-packet定义为com.xxx,如下

    
        
        
    

修改之后,controller继续提供URL访问服务,可以查询到数据,但是无法进行DELETE、UPDATE操作了!这是为什么呢?

为什么可以访问URL,可以查询数据,但是无法修改和删除了呢??
内部的原理是怎么回事呢?


感谢@1away 的回答。
原来是controller类被SpringMVC和SpringIoC容器重复扫描的问题。
修改配置后,IoC不扫描controller所在包就可以了。
可以明确指定路径,也可以通过exclude-filter解决.

2 个回答
  • 我都是这样配置的,没有问题啊

    2022-11-10 09:42 回答
  • 我是这样配的没有问题,
    dispatcherServlet配置 mvc-config.xml

    <!-- 使用Annotation自动注册Bean,只扫描@Controller -->
        <context:component-scan base-package="com.mxmht.xxx" use-default-filters="false"><!-- base-package 如果多个,用“,”分隔 -->
            <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        </context:component-scan>

    contextConfigLocation 配置spring-context.xml

        <!-- 使用Annotation自动注册Bean,解决事物失效问题:在主容器中不扫描@Controller注解,在SpringMvc中只扫描@Controller注解。  -->
        <context:component-scan base-package="com.mxmht.xxx"><!-- base-package 如果多个,用“,”分隔 -->
            <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        </context:component-scan>

    这个就相当于base-package="com.mxmht.xxx" 楼上的com.xxx

    2022-11-10 09:53 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有