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

  • 相关阅读:
    第二章 PROCESSES AND THREADS
    第一章 PROBLEMS
    第10章 图 10.1
    day2_jmeter关联的两种实现方式
    jmeter做SOAPui接口的性能测试
    day1_json_viewer美化接口请求、接口用例设计的方式和接口测试的必要性
    day1_jmeter接口如何添加断言
    day1_jmeter操作mysql步骤
    day1_jmeter添加cookie管理器和header信息头管理器
    day1_postman和jmeter处理接口入参既有key-value类型,也有上传文件类型的方式,利用postman实现自动化
  • 原文地址:https://www.cnblogs.com/chenying99/p/2698854.html
Copyright © 2020-2023  润新知