1 分钟阅读
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审计日志 vsREQUIRED同事务对比。- 故意同类
private @Transactional自调用观察失效。
7. 自测清单#
- 三种事务失效场景。
REQUIRES_NEW典型用途?- 缓存与 DB 不一致的常见触发?
- JDK 代理为何导致注入自身失效?
进阶篇结束。
相关阅读
基于内容相似度 + 标签/系列加权
- 1 分钟Java 从基础到精通(初级 · 高级 · 专家路线)
Java 精通 01:分布式一致性、事务模式与幂等——从理论到可交付方案
面向资深/专家:CAP 的实践读法、BASE、2PC/Saga/TCC 的取舍、Outbox 与消息语义;Java 业务里如何实现幂等与补偿的可观测闭环。
- Java
- 分布式
- 一致性
- 1 分钟Java 从基础到精通(初级 · 高级 · 专家路线)
Java 精通 03:架构演进、模块化单体与领域建模(专家级的边界与治理)
微服务不是默认答案:模块化单体、限界上下文、聚合与领域事件、API 版本化与契约测试;多团队协作下的架构治理与演进策略。
- Java
- 架构
- DDD
- 2 分钟Java 从基础到精通(初级 · 高级 · 专家路线)
Java 基础 03:异常体系、try-with-resources、IO/NIO.2 入门与并发初探
初级收尾篇:受检/非受检异常取舍、异常链与日志;现代 IO 用法;线程与 synchronized 的最小正确用法,为进阶 JUC 铺路。
- Java
- 异常
- IO
- 2 分钟Java 从基础到精通(初级 · 高级 · 专家路线)
Java 进阶 01:JUC、线程池、CompletableFuture 与异步组合实战
写给高级工程师:happens-before 直觉、Lock 与原子类、ExecutorService 参数含义、超时/取消/组合异步;常见踩坑与背压入门。
- Java
- 并发
- JUC