spring mvc 注解事务不生效

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/boke511936697/article/details/64123935

spring mvc注解事务配置很简单

下面简短的代码便可以解决 注解事务不生效问题。

我是 在web.xml文件<servlet-name>指向的首先加载的spring配置文件中加以下注解。这样好像不够优雅但没尝试更好的方法。

     <!-- (事务管理) -->           
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>  
    
    <!--定义注解驱动的事务 告诉spring查找上下文中所有@Transactional注解的Bean,
    而不管注解用在类级别还是方法级别上,对于每个使用@Transactional的Bean <tx:annotation-driven>
    会自动为它添加事务通知
    **proxy-target-class 若service类实现了接口,其值要为true
    **要想事务生效,必须要扫描包前定义注解驱动事务
    -->
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
 
    <!--自动扫描注解bean -->    
    <context:component-scan base-package="com"/>  


另外在service、controller类中都要throws Exception,例如下面

@Transactional(propagation=Propagation.REQUIRED,rollbackFor={Exception.class})
public void addSaveMoney ( BigDecimal amount,String account,DealRecord dealRecord)throws Exception{
try{
bankAccountDao.saveMoney(amount, account);
// String s = null;
// s.length();
bankAccountDao.saveOrPutMoneyLog(dealRecord);
}catch(Exception e){
throw e;
}


}


    @RequestMapping(value="/saveMoney",method= RequestMethod.POST)
    public ModelAndView saveMoney(HttpServletRequest request,Model model) throws Exception{
    String account = request.getParameter("account");
    String amountString = request.getParameter("amount");
    Long amountLong = Long.valueOf(amountString);
//     Long amountLong = Long.decode(amountString);
    BigDecimal amount = BigDecimal.valueOf(amountLong);
    Long accountid = bankAccountService.findAccountid(account);
    Timestamp dealTime = TimeStampUtil.formatTimeStamp(new Timestamp(new Date().getTime()));
    DealRecord dealRecord = new DealRecord(accountid, amount, DealWay.put, dealTime);
bankAccountService.addSaveMoney(amount, account,dealRecord);
    return new ModelAndView(new RedirectView("../security/userInfo/"+request.getParameter("name"))); 
    }



猜你喜欢

转载自blog.csdn.net/boke511936697/article/details/64123935