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"/>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我是这样配的没有问题,
dispatcherServlet配置 mvc-config.xml
contextConfigLocation 配置spring-context.xml
这个就相当于base-package="com.mxmht.xxx" 楼上的com.xxx
我都是这样配置的,没有问题啊