Spring 注解配置事务中所遇到的一点问题

本身使用Spring中的注解管理事务是一件非常简单的事情,但还是在实际项目中遇到了一点问题,现将其记录下来, 也希望

能和明白的人士进行探讨。

一. 首先就是在Spring 配置文件中进行配置

<bean id =" transactionManager "
class =" org.springframework.jdbc.datasource.DataSourceTransactionManager " >
< property name =" dataSource " ref =" dataSource " />
</ bean >

< tx:annotation-driven transaction-manager =" transactionManager " />

二.然后就是在类或接口中的方法进行注解操作

如:

此处为DAO接口

@Transactional(propagation=Propagation.REQUIRED)
public interface LogicDao{

@Transactional(propagation=Propagation.REQUIRED)
public int[] insertQuestion(QuestionA questionUser,QuestionB questionNaire);

@Transactional(propagation=Propagation.REQUIRES_NEW)
public boolean insertQuestion2(QuestionA questionUser,QuestionquestionNaire);

}

然后我们在service层中调用dao

@Transactional(propagation=Propagation.REQUIRED)
public int[] insertQuestion(QuestionUser questionUser,QuestionNaire questionNaire)
{
   Object obqe;
   Object obqu;
  int[] seqs = new int[2];
obqe = this.getQdao().insertQeuestion(questionNaire);
obqu = this.getQdao().insertQeuestionUser(questionUser);

if(obqu!=null && obqe!=null)
{
seqs[0]=(Integer)obqe;
seqs[1]=(Integer)obqu;
return seqs;
}
else
{
return null;
}
}
此时,spring管理事务就算是OK了,原理没有说,这里只讲应用。

 但是我在项目中遇到了一个问题

   我在声明dao中的方法throws Exception 如下

@Transactional(propagation=Propagation.REQUIRED)
public interface LogicDao{

@Transactional(propagation=Propagation.REQUIRED)
public int[] insertQuestion(QuestionA questionUser,QuestionB questionNaire) throws Exception;

@Transactional(propagation=Propagation.REQUIRES_NEW)
public boolean insertQuestion2(QuestionA questionUser,QuestionquestionNaire)throws Exception;

}

然后重新在service层中的insertQuestion方法中对其进行try catch中进行捕获,此时发现spring中的事务就不起作用了。

现在我也没有查出是为什么,还是对spring理解的不深,如何有明白的人留个脚印。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值