[Spring之AOP]

我是太陽啦啦啦發表於2017-12-03

前言:

最近在學習Sping,在通過專案中來看,自己清晰了少啊,感覺自己需要學習的東西還很多啊!今天,來介紹一下AOP,下面開始進入我們們的正題.

核心:

什麼是AOP:

AOP為Aspect Oriented Programming的縮寫,意為:面向切面程式設計,通過預編譯方式和執行期動態代理實現程式功能的統一維護的一種技術.

AOP是OOP(物件導向程式設計)的延續,是軟體開發中的一個熱點,也是Spring框架中的一個重要內容,是函數語言程式設計的一種衍生範型.

Spring AOP使用純Java實現,不需要專門的編譯過程和類載入器,在執行期通過代理方式向目標類織入增強程式碼.

AspectJ是一個基於Java語言的AOP框架,Spring2.0開始,Spring AOP引入對Aspect的支援,AspectJ擴充套件了Java語言,提供了一個專門的編譯器,在編譯時提供橫向程式碼的織入.

AOP實現原理

  • aop底層將採用代理機制進行實現。
  • 介面 + 實現類 :spring採用 jdk 的動態代理Proxy。
  • 實現類:spring 採用 cglib位元組碼增強。

經典應用

經典應用:事務管理、效能監視、安全檢查、快取 、日誌等

AOP術語

1.target:目標類,需要被代理的類。例如:UserService
2.Joinpoint(連線點):所謂連線點是指那些可能被攔截到的方法。例如:所有的方法
3.PointCut 切入點:已經被增強的連線點。例如:addUser()
4.advice 通知/增強,增強程式碼。例如:after、before
5. Weaving(織入):是指把增強advice應用到目標物件target來建立新的代理物件proxy的過程.
6.proxy 代理類
7. Aspect(切面): 是切入點pointcut和通知advice的結合

一個線是一個特殊的面。

    一個切入點和一個通知,組成成一個特殊的面。

優點:

利用AOP可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程式的可重用性,同時提高了開發的效率。
AOP採取橫向抽取機制,取代了傳統縱向繼承體系重複性程式碼

總結:

先學習了點理論,把理論應用於實踐,不斷成長!

相關文章