AOP(面向切面編程)是 OOP 的延續,核心在於「關注點分離」:將交易、安全、日誌、快取等橫切關注點從業務邏輯中剝離,封裝為 Aspect,實現高內聚、低耦合。本文從 J2EE 容器分層切入,通過「鎖」的經典案例闡述 AOP 必然性,並梳理應用範疇、必要性、主流實現框架。
傳統繼承方式實現「鎖」功能弊端重重:
「鎖」是縱向貫穿多類多方法的切面,天然適合 AOP 封裝。
| 關注點 | 容器服務 |
|---|---|
| Authentication | 權限驗證 |
| Caching | 快取管理 |
| Transactions | 事務邊界控制 |
| Persistence | 持久化透明化 |
| Resource pooling | 連接池/線程池 |
| Error handling / Logging / Monitoring | 統一異常處理與觀測 |
JBoss 4.0 即基於 AOP 重構微核,源碼可讀性大幅提升。
非銀彈。若使用全功能 J2EE 容器,容器已內建上述切面,應用開發者無需自建 AOP。但理解 AOP 能提升架構抽象層次,對自研框架、中間件開發至關重要。
業務系統優先利用容器內建服務;自研框架/中間件時,引入 AOP 解決橫切關注點,選擇動態代理平衡效能與靈活性。