ZxdNoob
首页文章简历版本历史AI 向导

ZxdNoob

用心记录,认真生活

按 ⌘K 快速导航到任意页面按 ⌘I 打开 AI 向导(或访问 /agent)

导航

  • 首页
  • 简历
  • 版本历史
  • AI 向导

更多

  • GitHub
  • Sitemap

© 2026 ZxdNoob. All rights reserved.

Built with Next.js · Styled with Tailwind CSS

返回文章列表
2026年5月2日 00:36:001 分钟阅读

Java 进阶 03:Spring 生态与典型服务端架构(IoC、AOP、事务与集成)

Spring Boot 心智:依赖注入与 Bean 生命周期、AOP 的典型用途、声明式事务传播与失效场景;与 Web、持久化、缓存、消息的常见集成边界。

  • Java
  • Spring
  • 架构
  • 后端
AI 共读让 Noob 帮你提炼要点 / 答疑

本篇目标:能描述 Bean 生命周期与代理对象;能解释 @Transactional 传播、rollbackFor、只读事务;能列举至少三种「事务不生效」;能说清缓存与 DB 一致性常见路径。


1. 知识点:IoC 容器要点#

  • BeanDefinition → 实例化 → 属性注入 → 初始化回调 → 就绪。
  • 作用域:singleton(默认)、prototype、request/session(Web)。
  • 循环依赖:Spring 用三级缓存解决部分字段注入场景;构造器循环仍应避免——设计问题。

2. 知识点:AOP 代理#

方式适用限制
JDK 动态代理接口只能代理接口方法
CGLIB类final 方法不可拦截

自调用陷阱:同类 this.foo() 不走代理 → @Transactional/@Cacheable 可能失效。

修复:拆 @Service、自注入(谨慎)、或 AopContext.currentProxy()(需开启 expose)。


3. 知识点:@Transactional#

传播(常用):

传播语义
REQUIRED(默认)加入当前事务;无则新建
REQUIRES_NEW挂起当前,开新事务
NESTED嵌套保存点(DataSource 支持)

rollbackFor:默认不回滚受检异常——业务异常若是 checked,必须指定。

@Transactional(rollbackFor = Exception.class)
public void placeOrder(...) { ... }

只读:优化 hint + 避免无意写入;仍可能因驱动忽略而不绝对。


4. 知识点:事务边界设计#

  • 远程 RPC、发消息、跨库:与本地事务解耦(Outbox 见精通篇)。
  • 重逻辑移出事务:缩短锁持有,降低死锁概率。

5. 知识点:缓存三连击#

问题处置思路
穿透布隆过滤器或缓存空值(短 TTL)
击穿热点互斥或逻辑过期
雪崩TTL 抖动、集群、限流

更新路径:先 DB 再删缓存 或 订阅 binlog——团队选一种并文档化。


6. Lab(迷你转账)#

  • transfer(from,to,amount):REQUIRES_NEW 审计日志 vs REQUIRED 同事务对比。
  • 故意同类 private @Transactional 自调用观察失效。

7. 自测清单#

  1. 三种事务失效场景。
  2. REQUIRES_NEW 典型用途?
  3. 缓存与 DB 不一致的常见触发?
  4. JDK 代理为何导致注入自身失效?

进阶篇结束。

相关阅读

基于内容相似度 + 标签/系列加权

  • 2026年5月2日 00:42:001 分钟Java 从基础到精通(初级 · 高级 · 专家路线)
    01

    Java 精通 01:分布式一致性、事务模式与幂等——从理论到可交付方案

    面向资深/专家:CAP 的实践读法、BASE、2PC/Saga/TCC 的取舍、Outbox 与消息语义;Java 业务里如何实现幂等与补偿的可观测闭环。

    • Java
    • 分布式
    • 一致性
  • 2026年5月2日 00:54:001 分钟Java 从基础到精通(初级 · 高级 · 专家路线)
    02

    Java 精通 03:架构演进、模块化单体与领域建模(专家级的边界与治理)

    微服务不是默认答案:模块化单体、限界上下文、聚合与领域事件、API 版本化与契约测试;多团队协作下的架构治理与演进策略。

    • Java
    • 架构
    • DDD
  • 2026年5月2日 00:18:002 分钟Java 从基础到精通(初级 · 高级 · 专家路线)
    03

    Java 基础 03:异常体系、try-with-resources、IO/NIO.2 入门与并发初探

    初级收尾篇:受检/非受检异常取舍、异常链与日志;现代 IO 用法;线程与 synchronized 的最小正确用法,为进阶 JUC 铺路。

    • Java
    • 异常
    • IO
  • 2026年5月2日 00:24:002 分钟Java 从基础到精通(初级 · 高级 · 专家路线)
    04

    Java 进阶 01:JUC、线程池、CompletableFuture 与异步组合实战

    写给高级工程师:happens-before 直觉、Lock 与原子类、ExecutorService 参数含义、超时/取消/组合异步;常见踩坑与背压入门。

    • Java
    • 并发
    • JUC
返回文章列表

目录

7
  1. 1. 知识点:IoC 容器要点
  2. 2. 知识点:AOP 代理
  3. 3. 知识点:`@Transactional`
  4. 4. 知识点:事务边界设计
  5. 5. 知识点:缓存三连击
  6. 6. Lab(迷你转账)
  7. 7. 自测清单
进入沉浸式阅读