什麼是AOP ?
- AOP:面向方面編程又稱面向切面編程,是對面向對象編程的有益補充和延伸
- 與Struts2的攔截器機制相似
AOP的作用是什麼?
- apo只關心兩個方面:在什麼位置? 執行什麼功能
- 採用橫向抽取機制,將特定功能代碼抽取出來單獨實現,放在專門的類和方法中處理,在程序進行編譯運行時再將這些代碼放到需要執行的地方(個人理解)
- 在不改變原有程序的基礎上,爲代碼段添加新的功能對其進行增強處理,設計思想來源於代理模式
- 代理模式:爲對象提供一個代理對象,通過代理對象調用源對象,在代理對象中添加新功能而不影響到源對象
- 可用於訪問控制,事務管理,性能檢測,異常處理、日誌、參數的合法性驗證
爲什麼使用AOP?
- 特點1:無需編寫顯示的調用,需要的時候能夠 “自動” 調用所需的功能
- 特點2:可以是開發人員專心於核心業務,不用過多的關注其他業務的實現
- 特點3:提高模塊化,增強代碼的可維護性
如何實現AOP?
- 基於XML配置文件方式
- 基於@AspectJ註解實現
AOP術語
- 切面(Aspect):一個關注點的模塊化,該關注點可能會橫切多個對象。如 日誌切面、事務切面、權限切面等。存放切面的類需要在配置文件中被bean標記指定
- 連接點(JoinPoint):具體的執行點,一個連接點表示一個方法的執行
- 切入點(Pointcut):切面與程序的交叉點,即需要處理的連接點
- 通知/增強處理(Advice):切面的具體實現,按其位置的不同可分爲前置通知、後置通知、異常通知、環繞通知、最終通知等5種。攔截器作爲通知模型,維護一個以連接點爲中心的攔截器鏈。
- 目標對象(Target Object):被切面操作的對象,也稱被通知對象。
- 代理對象(Proxy Object):將通知應用到目標對象後,被動態創建的對象。代理對象的功能相當於 業務邏輯功能+切面功能
- 織入(Weaving):生成代理對象,並將切面內容放入到流程中的過程,即將切面代碼插入到目標對象上,從而創建一個新的代理對象的過程
後續更新使用註解及xml文件方式使用通知的簡單案例
標題中的錯誤原因爲 jar包使用的不對 或 缺少jar包
AOP所需的jar包