`
y806839048
  • 浏览: 1146638 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

解决spring、springMVC重复扫描导致事务失效的问题

阅读更多

在主容器中(applicationContext.xml),将Controller的注解排除掉 

1
2
3
<context:component-scan base-package="com"
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> 
</context:component-scan>

而在springMVC配置文件中将Service注解给去掉 

1
2
3
4
<context:component-scan base-package="com"
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> 
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" /> 
</context:component-scan>

 

两套上下文的问题:

 

因为spring的context是父子容器,所以会产生冲突,由ServletContextListener产生的是父容器,springMVC产生的是子容器,子容器Controller进行扫描装配时装配了@Service注解的实例,而该实例理应由父容器进行初始化以保证事务的增强处理,所以此时得到的将是原样的Service(没有经过事务加强处理,故而没有事务处理能力。 

还有一种方式是将service层改用xml配置,其实这样做也是变相的让springmvc无法扫描service,而只能依赖父窗口也就是ServletContextListener来进行初始化,这样同样被赋予了事务性。 

分享到:
评论

相关推荐

    Spring+SpringMVC配置事务管理无效原因及解决办法详解

    在 application.xml 中配置的事务管理会被 SpringMVC 重复扫描,导致事务管理无效。 解决办法 要解决 Spring+SpringMVC 配置事务管理无效的问题,需要正确配置 Spring 和 SpringMVC 的配置文件。Spring 的配置文件...

    SSM框架整合演示代码

    在SSM整合中,避免了SpringMVC与Spring注解重复扫描导致的事务失效问题,这可能涉及到Spring的扫描范围设置。当两个不同组件扫描相同范围的类时,可能会出现事务管理器无法正确识别事务边界的问题。通过合理配置扫描...

    springMVC AOP拦截拦截Controller等实现日志管理

    在Spring MVC中,AOP(面向切面编程)是一种强大的工具,可以让我们在不修改代码的情况下,对程序的特定部分进行增强,例如日志记录、事务管理或性能监控。在这个场景中,我们将讨论如何利用AOP来实现Controller的...

    Spring框架是在2003年兴起的一门轻量级的JAVAEE框架技术 Spring框架学习资料第五天

    **一、事务传播属性失效问题及解决** 事务传播属性在Spring中用于控制事务边界,但有时可能会遇到配置无效的情况。解决思路是确保从Spring工厂中获取到的是代理类对象,因为事务管理是通过AOP(面向切面编程)实现的...

    SpringMVCHibernate集成及常见问题总结

    - **事务管理**:Spring的事务管理可能因为配置不当导致事务无法正常回滚或提交。 - **缓存问题**:Ehcache的配置可能导致缓存失效、更新不及时等问题。 - **资源文件**:国际化消息文件的路径和编码设置不当可能...

    SpringMVC精品资源--涵盖大部分Java进阶需要掌握的知识,包括【微服务】【中间件】【缓存】【数据库优化】【.zip

    在Spring MVC中,Spring Cache抽象可以方便地集成各种缓存解决方案。 4. **数据库优化**: 数据库优化涉及到SQL查询优化、索引设计、事务管理、读写分离、分库分表等。理解如何编写高效的SQL语句,避免全表扫描,...

    SSM的整合+OScache页面缓存+freemark模板

    4. 配置Mybatis的SqlSessionFactory,结合Mybatis-Spring的MapperScannerConfigurer扫描Mapper接口。 5. 编写Service、DAO和Mapper接口及XML配置,完成业务逻辑和数据访问。 通过以上步骤,可以构建一个完整的SSM...

    java软件工程师面试基本题_共5页.docx

    解决这些问题通常需要深入理解业务逻辑,优化代码结构,以及合理利用设计模式和框架。 2. **SpringMVC理解**:SpringMVC是一个基于Servlet的Web MVC框架,它通过DispatcherServlet作为前端控制器来接收和分发请求。...

    (2024)跳槽涨薪必备精选面试题.pdf

    - 主要用于解决线程安全问题。 2. **如何理解volatile关键字** - `volatile` 关键字确保了可见性和禁止指令重排。 - 用于确保共享变量在多线程环境下的正确性。 3. **ReentrantLock中的公平锁和非公平锁的底层...

Global site tag (gtag.js) - Google Analytics