sping中TransactionTemplate对Template模式的另一种实现方式
2012-09-23 12:42
477 查看
在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;
}
});
}
(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;
}
});
}
相关文章推荐
- 加载一个类时,其内部类是否同时被加载?引申出单例模式的另一种实现方式
- [读书笔记] 单例模式的几种实现方式
- 单例模式 及其实现方式
- 桥接模式的很好实现方式(应用shared_ptr)
- Android App底部导航栏的另一种实现方式
- 单例模式的几种实现方式
- JAVA设计模式-单例模式(Singleton)的五种实现方式
- Java基础---“接口”实现时的另一种方式。通过Java JDK API 1.6.0文档实例发现并得出结论
- 实现观察者模式(Observer Pattern)的2种方式
- 单例模式--Singleton的两种实现方式
- 单例模式的两种实现方式及区别
- 用条件编译实现,输入一行字符,可以用两种方式输出,一种为原文输出;另一种将字母转变成后继字母,即按密码输出
- 单例模式的两种实现方式:懒汉式 饿汉式
- 另一种实现接口中方法 的方式
- C++单例模式实现方式
- 组合模式实现方式一
- 多线程编程-单例模式的实现方式(九)
- 【Todo】单例模式各种实现方式及并发安全
- 单例模式的几种实现方式
- EffectiveJava(21)策略模式多种方式实现字符串比较