aop能夠將那些與業務無關,卻為業務模組所共同呼叫的邏輯或責任(例如事務處理、日誌管理、許可權控制等)封裝起來,便於減少系統的重複**,降低模組間的耦合度,並有利於未來的可拓展性和可維護性。
簡單例子:在某個專案裡,非管理員不能對某些業務進行操作,**如下:
從上面的**我們可以看出這種方式達到了許可權驗證的功能,但是如果有100個方法的話,就會顯得冗餘,**不好維護,這是傳統的硬編碼方式
我們對**進行改進(以註解的方式)
1,新建乙個切面(aspect)
@pointcut是切入點,我需要切入那些類或者那些方法,它有很多種方式(@annotation() execution() @within() @target() this() 等等 , 常用的是@annotation()
, execution()
)2.註解
3.實現
現在**就變得簡潔了,那個方法需要進行驗證,我就加上註解就行
再來乙個日誌管理的簡單例子
使用joinpoint可以獲取一些引數資訊
通過面向切面程式設計,將公共**抽離出來,進行統一化的處理,更加有效提高**質量,以上只是一些再簡單不過的例子,
Spring AOP 面向切面程式設計
spring aop aop aspect orient programming 也就是面向切面程式設計 可以這樣理解,物件導向程式設計 oop 是從靜態角度考慮程式結構,面向切面程式設計 aop 是從動態角度考慮程式執行過程。在日常生活中,會遇到各種各樣的中介機構,比如獵頭公司,律師事務所,婚姻介...
Spring AOP面向切面程式設計
最近在系統中需要實現使用者某些操作新增積分,希望實現對系統現有的 進行最小嵌入,因此使用spring aop的切面程式設計將很好實現該需求,達到最小耦合度。在spring aop中的通知都是針對方法層級進行通知,相對與struct中針對類層級通知,具有更好的靈活性。方法攔截 methodinterc...
Spring AOP面向切面程式設計
一.常用概念 原有功能 切點 pointcut 前置通知 在切點之前執行的功能,before advice 後置通知 在切點之後執行的功能,after advice 異常通知 如果切點執行過程 現異常,則觸發異常通知 throws advice 切面 所有功能的總稱 織入 把切面嵌入到原有功能的過程...