zoukankan      html  css  js  c++  java
  • sping中TransactionTemplate对Template模式的另一种实现方式

    在sping中提供了另一种实现template模式的方法,利用接口回调函数. 

    (1)TransactionTemplate的示例代码: 

    public class TransactionTemplate extends DefaultTransactionDefinition implements InitializingBean{ 

    .......... 

    //进行事务处理的骨架,指明事务处理的顺序 
    public Object execute(TransactionCallback action)throws TransactionException{ 

      TransactionStatus status=this.transactionManager.getTransaction(this); 
      Object result=null
      try

       result=action.doInTransaction(status); 


      }catch(RuntimeException ex){ 

    rollbackOnException(status,ex); 
    throw ex; 


    catch(Error err){ 

    rollbackOnException(status,err); 
    throw err; 



    this.transactionManager.commit(status); 
    return result; 




    //事务处理回调时调用 

    private void rollbackOnException(TransactionStatus status,Throwable ex)throws TransactionException{ 

    try

    }catch(RuntimeException ex2){ 
       throw ex2; 
      } 
    catch(Error err){ 

    throw err; 


    }  

    说明: 

    这里TransactionTemplate 没有使用抽象类,在它的execute()方法里定义事务处理的骨架代码.但execute()方法的TransactionCallback参数却是个接口,在这接口中定义了doInTransaction()方法 

    (2) 

     //********TransactionCallback.java***** 
    public interface TransactionCallback{ 
       
    Object doInTransaction(TransactionStatus status); 

    }  

    (3)只要实现TransactionCallback接口,并在doInTransaction()方法里编写具体要进行的事务处理的代码就可以 了. 
    ............ 
    .......... 

    .. 
    .. 

    //事务处理方法 
    public int create(String s){ 

    TransactionTemplate transactionTemplate=new TransactionTemplate(transactionManager); 

    Object result=transactionTemplate.execute( 
                   new TransactionCallback(){ 
                   
                   public Object doInTransaction(TransactionStatus status)      
                 { 
                        //执行新增操作.... 
                          ...... 
                      //返回值 
                     result resultO; 
           
              } 
              }); 

  • 相关阅读:
    Ubuntu 环境变量
    UBoot命令介绍
    如何在内核里面查找某些结构体或者宏的定义
    linux core dump
    右下角弹出广拦截程序(迅雷,搜狐,腾讯)
    aptfile 安装包文件搜索
    Windows 7操作系统中使用IIS,WinScp搭建ftp服务器
    UltraEdit文本编辑利器
    SSIS高级转换任务—导出列
    SSIS高级转换任务—在Package中是用临时表是需要设置RetainSameConnection属性
  • 原文地址:https://www.cnblogs.com/chenying99/p/2698854.html
Copyright © 2011-2022 走看看