lidafeng111 2011-10-08 18:05
浏览 196
已采纳

spring MVC 事物控制问题

[size=medium]在Service层配置@Transactional不起作用[/size]

下面是配置文件
<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->




<!-- Activates scanning of @Autowired -->
context:annotation-config/

<!-- Activates scanning of @Repository -->
<context:component-scan base-package="com.yxtech.android.eamos.dao"/>

是不是还需要配置什么东西呢..求解

  • 写回答

4条回答 默认 最新

  • jep1983 2011-10-09 09:33
    关注

    可以这么写,(确保service在com.yxtech.android.eamos下) ,但有可能造成你单元测试事务生效但
    在web应用中事务不生效,以下是解决方案:

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


    /context:component-scan

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



    /context:component-scan
    或者仅仅扫描controller组件:

    因为spring的context是父子容器,所以会产生冲突,
    Controller会先进行扫描装配,而此时的Service还没有进行事务的增强处理,
    得到的将是原样的Service(没有经过事务加强处理,故而没有事务处理能力) ,
    最后才是applicationContext.xml中的扫描配置进行事务处理。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable