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; 
           
              } 
              }); 

  • 相关阅读:
    从json中获取自己想要的属性
    对称加密解密
    springboot 读取resource目录下的文件
    安装nginx 配置了ssl 启动报错
    复利计算--4.0 单元测试之JAVA版-软件工程
    《构建之法》前三章读后感
    单利 复利计算器程序1.0 2.0 3.0 [ 合 ] 之 WEB
    操作系统 实验一 命令解释程序的编写
    单利 复利计算器程序1.0 2.0 3.0 [ 合 ] 之 C语言
    统计实验数据 总结实验结果
  • 原文地址:https://www.cnblogs.com/chenying99/p/2698854.html
Copyright © 2011-2022 走看看