关于Spring事务控制方面的问题,就是不在service层做控制现在我在写一个小系统,需要引入事务控制相关的东西.原来与spring事务都是在service层做的,现在我这个系统有需求是在controller层(action层

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/06 13:56:41
关于Spring事务控制方面的问题,就是不在service层做控制现在我在写一个小系统,需要引入事务控制相关的东西.原来与spring事务都是在service层做的,现在我这个系统有需求是在controller层(action层

关于Spring事务控制方面的问题,就是不在service层做控制现在我在写一个小系统,需要引入事务控制相关的东西.原来与spring事务都是在service层做的,现在我这个系统有需求是在controller层(action层
关于Spring事务控制方面的问题,就是不在service层做控制
现在我在写一个小系统,需要引入事务控制相关的东西.
原来与spring事务都是在service层做的,现在我这个系统有需求是在controller层(action层)做事务控制,请问这个可能吗?还有有没有具体的实现方法和事例.

关于Spring事务控制方面的问题,就是不在service层做控制现在我在写一个小系统,需要引入事务控制相关的东西.原来与spring事务都是在service层做的,现在我这个系统有需求是在controller层(action层
同意1楼的兄弟说的,业务逻辑应该由service处理,造成需要在action开启事务的最根本原因主要是你的组件层API设计有问题,action中不该处理业务逻辑代码的,需要调多个service完成的功能其实就是一个业务,不过不按1楼说的把action放到spring托管也有办法在action手动开启事务,下边是我以前写的代码,当时是为了解决遗留系统的事务问题,你可以参考测试一下:
public interface ITransactionManager {
/**
 * 该方法中是需要进行事务控制的内容
 * @return
 * @throws Exception
 */
Object doInTransaction() throws Exception;
}
public class DataSourceTransactionUtil {
public Object execute(final ITransactionManager transactionManager){
DataSourceTransactionManager dataSourceTransactionManager = getDataSourceTransactionManager();
TransactionTemplate transactionTemplate = new TransactionTemplate(dataSourceTransactionManager);
return transactionTemplate.execute(new TransactionCallback(){
public Object doInTransaction(TransactionStatus transactionStatus) {
Object savepoint = transactionStatus.createSavepoint();
Object result = null;
try{
result = transactionManager.doInTransaction();
} catch(Exception e){
transactionStatus.rollbackToSavepoint(savepoint);
e.printStackTrace();
} finally{
transactionStatus.releaseSavepoint(savepoint);
}
return result;
}
});
}
private DataSourceTransactionManager getDataSourceTransactionManager(){
return (DataSourceTransactionManager)getBean("transactionManager");
}
}
解释一下:
这段代码我记得是看了spring源码后自己写的.
1、getBean("transactionManager");是获得spring中事务管理器那个bean,你自己改名字.
2、把这段代码放到你的BaseAction中:
protected Object beginTransaction(ITransactionManager transactionManagerImpl){
DataSourceTransactionUtil dt = new DataSourceTransactionUtil();
return dt.execute(transactionManagerImpl);
}
3.在你需要开启事务的action中调用beginTransaction方法transactionManagerImpl这个对象你写个匿名内部类然后实现doInTransaction() 方法,在doInTransaction() 中去写你调用多个service的代码

关于Spring事务控制方面的问题,就是不在service层做控制现在我在写一个小系统,需要引入事务控制相关的东西.原来与spring事务都是在service层做的,现在我这个系统有需求是在controller层(action层 spring MVC 我想在控制层或者Service添加一个事务,就是同时对一张表的两种操作 关于秦朝三公的问题下列有关秦朝“三公”的说法,不正确的是()A.是中央三个最高官职B.在权、责方面互相牵制C.御史大夫兼理国家检察事务D.郡守与“三公”地位相同 我就是不知道选A还 关于液压方面的英语问题液压方面控制液压流量的整流板应该怎么翻译啊?注意是液压方面的,不是电气方面的. 关于事务繁忙带马字的成语. spring的aop问题 关于Spring的作文 spring配置事务里面这句话是什么意思? 关于春节方面的英语故事,介绍等.(Spring fastival)如果有翻译, 有哪些关于动物方面的问题 有关于电工方面的问题 英语翻译关于怎么在Multi-thread中使用Spring transaction的问题.如下Code.:UpdateData能否使用spring transaction,如不能,怎么才能让UpdateData使用spring transaction 关于PID控制和PI PD控制的差异问题对于同一个水箱 如果采用PI PD PID控制 那么P I D的三个参数可以设定成一样的么?比如Pd控制的P和D 是不是和PID控制的PD是一样的?第二个问题就是 对于液位控制 最好是七年级上半学期的关于这方面的问题,就是较难的题目 急求关于武德方面的问题关于武德方面的问题的系统知识 关于How to make Spring Festival couplets 写一篇演讲稿 (介绍)介绍春联的历史等方面。 spring事务为什么放入service层进行处理? 关于实验心理学的问题:怎样选择和控制实验变量?