📘 本文为「Java 模拟面试总结系列」的第 5 篇,内容由我通过 ChatGPT 模拟问答整理而成,适合用于备战中高级 Java 开发面试。
本篇主题:Spring 核心原理
# 📌 导航:
[TOC]
# 📚 Java 模拟面试系列目录:
- Java 基础与进阶
- JVM 面试题与知识点详解
- 并发编程与锁机制
- MySQL 与 SQL 优化
- Spring 核心原理
- 系统设计与高并发架构
- Redis 高级特性
- 注册中心与微服务治理
- 项目实战与系统架构设计
# ❓问题 1:你了解 Spring 的声明式事务吗?请回答:**
@Transactional注解一般写在什么地方?- 默认情况下,哪些异常会触发事务回滚?
- 如果我希望遇到某个自定义异常不回滚,应该怎么做?
# ✅答案:
-
@Transactional最推荐放在Service层的方法上,因为:-
控制事务粒度更细;
-
避免类中某些非事务方法被误标;
-
类上标注表示所有
public方法都带事务,但无法精细控制。
-
-
默认运行时异常和 Error 回滚,受检异常不回滚。
-
如果想让事务遇到某个自定义异常不回滚,可以在
@Transactional注解中用noRollbackFor属性指定该异常的类,比如:@Transactional(noRollbackFor = MyCustomException.class)
这样即使抛出
MyCustomException,事务也不会回滚。
📖 敬请期待下一篇:《系统设计与高并发架构》