📘 本文为「Java 模拟面试总结系列」的第 5 篇,内容由我通过 ChatGPT 模拟问答整理而成,适合用于备战中高级 Java 开发面试。

本篇主题:Spring 核心原理

# 📌 导航:

[TOC]


# 📚 Java 模拟面试系列目录:

  1. Java 基础与进阶
  2. JVM 面试题与知识点详解
  3. 并发编程与锁机制
  4. MySQL 与 SQL 优化
  5. Spring 核心原理
  6. 系统设计与高并发架构
  7. Redis 高级特性
  8. 注册中心与微服务治理
  9. 项目实战与系统架构设计

# ❓问题 1:你了解 Spring 的声明式事务吗?请回答:**

  1. @Transactional 注解一般写在什么地方?
  2. 默认情况下,哪些异常会触发事务回滚?
  3. 如果我希望遇到某个自定义异常不回滚,应该怎么做?

#答案:

  1. @Transactional 最推荐放在 Service 层的方法上,因为:

    • 控制事务粒度更细;

    • 避免类中某些非事务方法被误标;

    • 类上标注表示所有 public 方法都带事务,但无法精细控制。

  2. 默认运行时异常和 Error 回滚,受检异常不回滚。

  3. 如果想让事务遇到某个自定义异常不回滚,可以在 @Transactional 注解中用 noRollbackFor 属性指定该异常的类,比如:

    @Transactional(noRollbackFor = MyCustomException.class)

    这样即使抛出 MyCustomException ,事务也不会回滚。

📖 敬请期待下一篇:《系统设计与高并发架构》