찾다

 >  Q&A  >  본문

java - SpringMVC Controller配置和事务问题

Java框架: SpringMVC4 , Spring4

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

SpringMVC配置文件: app-servlet.xml

    <context:component-scan base-package="com.xxx.controller">
        <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>

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

问题来了:

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

    <context:component-scan base-package="com.xxx">
        <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>

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

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


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

巴扎黑巴扎黑2847일 전653

모든 응답(2)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-17 15:05:34

    이렇게 구성하니 문제 없이
    dispatcherServlet 구성 mvc-config.xml

    으아아아

    contextConfigLocation 구성 spring-context.xml

    으아아아

    이것은 base-package="com.mxmht.xxx" com.xxx upstairs와 동일합니다

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-17 15:05:34

    이렇게 구성했는데 문제 없습니다

    회신하다
    0
  • 취소회신하다