Spring框架 - AOP概述

#AOP概述 ##日誌 咱們須要在不一樣業務邏輯的頭尾都添加日誌等相同功能正則表達式

##缺點 若是在也安全

  • 代碼重複
  • 耦合業務邏輯與非業務邏輯

##AOP AOP能夠把業務邏輯與非業務邏輯從工程組織上分開。框架

##AOP優勢函數

  • 代碼重用
    咱們在Java裏面添加了這些日誌,在添加業務邏輯後,並不須要添加劇復的非業務邏輯代碼。
  • 解耦業務邏輯與非業務邏輯
    從維護代碼上更方便

##從抽象總計AOP AOP也叫作橫切,經過AOP切面,能夠實現相同非業務代碼切入到全部相同類型的業務代碼。日誌

輸入圖片說明

##AOP基本概念 Aspect:咱們把MyLogger叫作Aspect(切面),咱們把業務邏輯代碼叫作Join point。函數執行是一個Join point。咱們在函數執行過程作一些AOP操做。還有一些其餘的Join point,例如屬性訪問,能夠在屬性訪問以前或者以後也能夠添加AOP。
Spring AOP並無提供屬性訪問的AOP,只提供了函數的AOP。code

Advice:咱們把MyLogger在函數入口或者出口時打印日誌,定義切面在某個特定的點執行功能。圖片

在實際開發過程當中,咱們要告訴AOP框架咱們哪些業務邏輯是須要添加Aspect的。咱們須要有種方式告訴Aspect,在哪些函數上要執行Aspect。通常咱們使用正則表達式的方式,例如Caculator.*ip

輸入圖片說明

##AOP術語開發

  • Aspect:日誌、安全等功能
  • Join point:函數執行或者屬性訪問 - Spring指函數執行
  • Advice: 在某個函數執行點上要執行的切面功能
  • Pointcut:匹配橫切木雕函數的表達式

Aspect、Pointcut、Advice,若是咱們須要定義AOP相關功能的首先就須要定義這些內容。it

##Advice類型 咱們會在函數入口出口都會作一些操做。

  • Before:函數執行以前
  • After returning:函數正常返回以後
  • After throwing:函數拋出異常以後
  • After finally:函數返回以後
  • Around:函數執行先後

##Spring AOP

  • 非完整AOP實現
    只支持函數AOP實現
  • 整合AOP與IoC功能
    幫助咱們解決現實當中的問題

注意:若是在開發中須要更完整的AOP功能,能夠去了解AspectJ,是Eclipse基金會下的子項目。

##Spring AOP 經過兩種不一樣的方式

  • XML schema-based AOP
    經過XML文件的方式
  • @AspectJ annotation-based AOP 經過註解的方式
相關文章
相關標籤/搜索