`

spring事务管理

 
阅读更多
自己开发过程中遇到了不明白的问题,然后测试了下。觉得可以拿出来做个面试题了。
@Transactional
public class testService{
  public void func3() throws Exception{
        func2();
    }
    public void func2()throws Exception{
        try{
            func1();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    public void func1()throws Exception {
        jdbcDao.execute("update cs_repay_amortization set payment_way ='2' where id=1");
        int i =1/0;
    }
}

主要配置:
<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager" />
<!-- 配置事务属性 -->
<property name="transactionAttributes">
<props>
              <prop key="*">PROPAGATION_REQUIRED, -Exception</prop>
</props>
</property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>

问题是:数据库操作update会回滚还是执行修改呢?

经测试,结果是执行了修改,并没有回滚。我理解的是到最后其实并没有抛出异常,所以没回滚。
然后把func2中的处理异常去掉,将会回滚。已经测试。
注意:
@Transactional 只能被应用到public方法上

对于其它非public的方法,如果标记了@Transactional也不会报错,但方法没有事务功能.
分享到:
评论

相关推荐

    Spring事务管理Demo

    Spring事务管理的目的是确保数据的一致性和完整性,尤其是在多操作、多资源的环境中。本Demo将深入探讨Spring如何实现事务的管理。 首先,Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。 ...

    Spring事务管理开发必备jar包

    本资源包提供了进行Spring事务管理开发所需的所有关键库,包括框架基础、核心组件、AOP(面向切面编程)支持、日志处理、编译工具以及与数据库交互的相关jar包。下面将对这些知识点进行详细解释: 1. **Spring框架*...

    spring 事务管理的理解

    Spring 框架是Java开发中...理解并熟练掌握Spring事务管理,对于提升应用程序的稳定性和可靠性至关重要。在实际开发中,结合声明式事务管理、事务传播行为、隔离级别和回滚规则,可以有效地确保数据的完整性和一致性。

Global site tag (gtag.js) - Google Analytics