如何给Spring MVC的action加上事务

其实就是一个加载顺序的问题

首先使用了spring MVC的项目是不需要配置action bean,而是通过spring mvc的配置文件进行扫描注解加载的,spring事务配置文件还有上下文都是通过org.springframework.web.context.ContextLoaderListener加载的,而spring MVC的action是通过org.springframework.web.servlet.DispatcherServlet加载的,这样就有个优先级的问题了,web是先启动ContextLoaderListener后启动DispatcherServlet,在ContextLoaderListener加载的时候action并没在容器中,所以现在使用AOP添加事务或者扫描注解都是无用的。

那么解决办法就是在DispatcherServlet加载的spring-MVC配置文件后再加上AOP事务扫描配置就OK了

1
2
3
4
5
6
7
8
< tx:advice  id = "defaultTxAdvice"  transaction-manager = "transactionManager" >
     < tx:attributes >
         < tx:method  name = "questionReply"  propagation = "REQUIRED" />
     </ tx:attributes >
</ tx:advice >
< aop:config >  
     < aop:advisor  advice-ref = "defaultTxAdvice"  pointcut = "execution(* com.jeecms.cms.action.front.PhQuestionAct.*(..))" />  
</ aop:config >

至于为什么要在Action中加事务

spring in action 一书中也说过 service dao action 是很经典的组合但不是必须的,对于一个简单的增删改查系统,没必要分那么多层,比如一个简单保存功能 无非就new 一个实体 映射参数 使用了spring jdbcTemplate 保存就一行代码 就一个这么简单的功能有必要 一个service接口 一个service实现类 一行代码调用一个dao接口一个dao实现类  要多建四个类 还要在spring上下文中配置不累吗?对于一个简单的系统而言这就是为自己找不自在,明明盖的是民房,硬要打摩天大楼的地基。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值