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
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值