Spring编程式事物管理案例

来源:互联网 发布:itools4.0 mac 编辑:程序博客网 时间:2024/05/17 02:26

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.transaction.TransactionStatus;

import org.springframework.transaction.support.TransactionCallback;

import org.springframework.transaction.support.TransactionSynchronizationAdapter;

import org.springframework.transaction.support.TransactionSynchronizationManager;

import org.springframework.transaction.support.TransactionTemplate;


//本类实现了一个事务,本地提交成功后再执行其他的事情

public class TestTransaction

{

    @Autowired

    TransactionTemplate transactionTemplate;

    

    public void testTransaction(Objectobject)

    {

        Object result = transactionTemplate.execute(new TransactionCallback<Object>()

        {

            @Override

            public Object doInTransaction(TransactionStatusstatus)

            {

                return doTransaction();

            }

        });

        

       

    }

    

    /**

     * 执行本地事务代码

     * @return

     */

    private Object doTransaction()

    {

        //do something

        registTransactionSynchronizationManager();

        //do something

        return new Object();

    }

    

    /**

     * 在当前线程中注册一个事物同步管理器,当事物执行成功后继续执行,也可以当事物成功执行前执行

     */

    private void registTransactionSynchronizationManager()

    {

        if (TransactionSynchronizationManager.isSynchronizationActive())

        {

            TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter()

            {

                //事物提交完毕后执行

                @Override

                public void afterCommit()

                {

                    //doSomething

                }

            });

        }

    }

}


0 0
原创粉丝点击