AOP(Aspect-Oriented Programming,面向切面編程) 旨在將橫切關注點(Cross-Cutting Concerns)與業務邏輯分離。典型橫切關注點包括:權限檢查、日誌記錄、事務管理、性能監控、異常處理等。
傳統做法在每個業務方法、按鈕點擊、頁面訪問處硬編碼 if (hasPermission) { doAction(); },導致:
Java 中主流實現基於動態代理:
客戶端調用
↓
代理對象(攔截器)
↓
[權限切面] → 判斷用戶權限
├─ 通過 → 調用目標業務方法 → 返回結果
└─ 拒絕 → 拋出異常 / 返回錯誤碼
@Aspect、@Pointcut、@Before/@After/@AroundAOP 並非銀彈,但對於權限、日誌、事務等橫切關注點,是減少重複、降低耦合、提升可維護性的利器。理解「代理攔截 + 切面織入」核心模型,是掌握 Spring 生態的關鍵一步。