关于spring在controller层的事务操作

来源:互联网 发布:印度it为何这么强 知乎 编辑:程序博客网 时间:2024/06/05 19:02

以下是代码:

package cn.hr.controller;import java.io.PrintWriter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.transaction.PlatformTransactionManager;import org.springframework.transaction.TransactionDefinition;import org.springframework.transaction.TransactionStatus;import org.springframework.transaction.support.DefaultTransactionDefinition;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import cn.hr.base.action.BaseAction;import cn.hr.service.IAnnualbonuService;@Controller@RequestMapping(value="/demoTest")public class DemoTestController extends BaseAction<Object>{    @Autowired    private IAnnualbonuService annualbonuService;    @Autowired    private PlatformTransactionManager transactionManager;    /**      *       * @param payNamelist      * @param request      * @param response      * @param session      */    @RequestMapping(value = "/deletePayNamelist",method = RequestMethod.POST)    public void deletePayNamelist(HttpServletRequest request, HttpServletResponse response,HttpSession session) {        PrintWriter out = null;        TransactionStatus status = this.transaction();        try {            //=====================业务逻辑处理地方================================            out=response.getWriter();            out.write("0");            out.flush();            transactionManager.commit(status);        } catch (Exception e) {            transactionManager.rollback(status);            out.write("");            out.flush();            logger.error(e);        }finally{                 out.flush();            out.close();       }    }    private TransactionStatus transaction(){        DefaultTransactionDefinition defaultTransactionDefinition = new DefaultTransactionDefinition();        defaultTransactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);        TransactionStatus status = transactionManager.getTransaction(defaultTransactionDefinition);        return status;    }}

主要是transaction这个方法,意思是:new 一个新的事务,再设置自己所需要的事务隔离级别,最后通过注入的transactionManager得到该事务即可。百分百生效!

阅读全文
0 0
原创粉丝点击