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

  • 相关阅读:
    hive与hbase整合
    待重写
    hive DML
    【知识强化】第六章 总线 6.1 总线概述
    【知识强化】第五章 中央处理器 5.1 CPU的功能和基本结构
    【知识强化】第四章 指令系统 4.3 CISC和RISC的基本概念
    【知识强化】第四章 指令系统 4.2 指令寻址方式
    【知识强化】第四章 指令系统 4.1 指令格式
    【知识强化】第三章 存储系统 3.6 高速缓冲存储器
    【知识强化】第三章 存储系统 3.5 双口RAM和多模块存储器
  • 原文地址:https://www.cnblogs.com/chenying99/p/2698854.html
Copyright © 2011-2022 走看看