Spring 面试题:第3套

Spring 面试题 事务管理
Spring 面试题第3套主要讨论了声明式事务管理,重点介绍了 `@Transactional` 注解的用途。该注解用于标记需要事务管理的方法或类,是 Spring 框架中实现声明式事务的核心工具。通过使用 `@Transactional`,开发者可以简化事务管理代码,提升开发效率。
文章内容
思维导图
常见问题
社交分享

1、声明式事务管理:@Transactional 是 Spring 框架中用于声明式事务管理的注解,常用于标记需要事务…

本文为付费内容,订阅专栏即可解锁全部文章

立即订阅解锁

思维导图生成中,请稍候...

问题 1: 什么是 Spring 框架中的声明式事务管理?
回答: 声明式事务管理是 Spring 框架提供的一种通过配置或注解来管理事务的方式,开发者无需在代码中显式编写事务管理逻辑,而是通过注解(如 @Transactional)来标记需要事务支持的方法或类。

问题 2: @Transactional 注解的作用是什么?
回答: @Transactional 注解用于标记需要事务支持的方法或类,Spring 框架会自动为这些方法或类提供事务管理功能,确保方法执行过程中的数据一致性。

问题 3: 使用 @Transactional 注解时需要注意哪些事项?
回答: 使用 @Transactional 注解时,需要注意事务的传播行为、隔离级别、超时设置以及回滚规则等配置,以确保事务的正确性和性能。

问题 4: 声明式事务管理与编程式事务管理有什么区别?
回答: 声明式事务管理通过配置或注解实现,代码简洁且与业务逻辑解耦;而编程式事务管理需要在代码中显式编写事务管理逻辑,灵活性更高但代码复杂度也更高。

问题 5: @Transactional 注解可以应用在哪些地方?
回答: @Transactional 注解可以应用在类或方法上。当应用在类上时,类中的所有公共方法都会默认启用事务;当应用在方法上时,只有该方法会启用事务。

问题 6: 如何配置 @Transactional 注解的事务传播行为?
回答: 可以通过 @Transactional 注解的 propagation 属性来配置事务传播行为,例如 Propagation.REQUIRED 表示如果当前存在事务,则加入该事务,否则创建一个新事务。

问题 7: @Transactional 注解的隔离级别如何设置?
回答: 可以通过 @Transactional 注解的 isolation 属性来设置隔离级别,例如 Isolation.READ_COMMITTED 表示只能读取已提交的数据,避免脏读。

问题 8: 如果事务执行过程中发生异常,@Transactional 注解如何处理?
回答: 默认情况下,@Transactional 注解会在遇到运行时异常(RuntimeException)或错误(Error)时回滚事务。可以通过 rollbackFornoRollbackFor 属性自定义回滚规则。

问题 9: 如何为 @Transactional 注解设置事务超时时间?
回答: 可以通过 @Transactional 注解的 timeout 属性来设置事务超时时间,单位为秒。如果事务执行时间超过指定时间,事务将自动回滚。

问题 10: @Transactional 注解是否支持分布式事务?
回答: @Transactional 注解本身不支持分布式事务,它仅适用于单数据源的事务管理。如果需要分布式事务支持,可以结合其他框架(如 Seata)或技术(如 JTA)来实现。