美文网首页
Spring事务面试题

Spring事务面试题

作者: sizuoyi00 | 来源:发表于2019-07-19 19:56 被阅读0次

事务面试题

1.什么情况导致事务失效

2.事务的传播行为

3.事务的隔离级别

详见文章:https://www.jianshu.com/p/9e7a80fbc73a

4.只在public方法上生效?

只有@Transactional 注解应用到 public 方法,才能进行事务管理。这是因为在使用 Spring AOP 代理时,Spring 在调用 TransactionInterceptor 在目标方法执行前后进行拦截之前,DynamicAdvisedInterceptor(CglibAopProxy 的内部类)的的 intercept 方法或 JdkDynamicAopProxy 的 invoke 方法会间接调用 AbstractFallbackTransactionAttributeSource(Spring 通过这个类获取表 1. @Transactional 注解的事务属性配置属性信息)的 computeTransactionAttribute 方法。

如果想在非public方法上生效,考虑使用AspectJ(织入方式)。

5.回滚规则

默认只把runtime, unchecked exceptions标记为回滚,即RuntimeException及其子类,Error默认也导致回滚。

6.事务注解在类/方法上

如果在接口、实现类或方法上都指定了@Transactional 注解,则优先级顺序为方法>实现类>接口;

建议只在实现类或实现类的方法上使用@Transactional,而不要在接口上使用,这是因为如果使用JDK代理机制(基于接口的代理)是没问题;

而使用使用CGLIB代理(继承)机制时就会遇到问题,因为其使用基于类的代理而不是接口,这是因为接口上的@Transactional注解是“不能继承的”;

7.事务分类

  • 编码事务:硬编码实现事务,在需要事务的代码中手动开启事务,事务结束回滚或者提交。

  • 声明式事务:基于Spring AOP,通过切面完成事务管理。可以通过Xml定义切点、切面、通知等。也可以在需要事务的方法通过注解@Transactional完成。

编程式事务简单eg:

@Autowired
    private TransactionTemplate transactionTemplate;

    public void test() {
        //无返回值
        transactionTemplate.execute(new TransactionCallbackWithoutResult() {
            @Override
            public void doInTransactionWithoutResult(TransactionStatus status) {

            }

        });

        //有返回值
        transactionTemplate.execute(new TransactionCallback<String>() {
            @Override
            public String doInTransaction(TransactionStatus status) {
                return null;
            }
        });
    }

相关文章

  • 问题记录

    面试题记录 spring spring事务传播机制和隔离级别? spring支持的事务类型? 什么是 Spring...

  • 博客地址(常看看)

    # Spring的编程式事务和声明式事务# java面试题 EJB部分

  • 2018-07-05

    ## 面试题:spring事物失效的9大原因 #### 1.spring事物实现方式及原理 Spring 事务的本...

  • Java高频面试题分享(六)——Spring 支持的数据库事务传

    面试题: 请介绍下 Spring 支持的常用数据库事务传播属性和事务隔离级别? 参考答案: 事务传播属性: 当事务...

  • springboot面试题大全

    spring面试题,spring mvc面试题,springboot面试题大全 1、[ Spring中的自动装配有...

  • Spring事务面试题

    事务面试题 新地址:https://www.jianshu.com/p/9a0b6e07df61 新地址:http...

  • Spring事务面试题

    事务面试题 1.什么情况导致事务失效 2.事务的传播行为 3.事务的隔离级别 详见文章:https://www.j...

  • spring面试题_spring mvc面试题_springbo

    spring面试题,spring mvc面试题,springboot面试题大全1、 Spring中的自动装配有哪些...

  • 关于事务的思考

    Spring对于事务的支持 Spring事务接口 Spring事务管理器 Spring并不直接管理事务,而是提供多...

  • Spring事务

    Spring 事务 分类 Spring可以支持编程式事务和声明式事务。 编程式事务 实现 Spring使用事务管理...

网友评论

      本文标题:Spring事务面试题

      本文链接:https://www.haomeiwen.com/subject/tgfelctx.html