| 維度 | 事件 | Spring AOP |
|---|---|---|
| 粒度 | 細粒度(方法級、動作級) | 粗粒度(類級、模塊級) |
| 組織對象 | 不同業務方法之間 | 切面 管理 Bean 的橫切關注點 |
| 觸發機制 | 顯式發布/監聽 | 隱式攔截(代理) |
| 耦合度 | 發布者依賴事件總線/接口 | 目標對象無感知(無侵入) |
| 典型場景 | 業務解耦、異步通知、領域事件 | 事務、日志、安全、緩存、監控 |
// 事件:顯式發布
eventPublisher.publishEvent(new UserRegisteredEvent(user));
// AOP:隱式攔截
@Around("execution(* com.service.*.*(..))")
public Object logAround(ProceedingJoinPoint pjp) { ... }
事件是細粒度的顯式解耦,AOP 是粗粒度的隱式橫切,兩者互補而非替代。