l 在軟件業,AOP爲Aspect Oriented Programming的縮寫,意爲:面向切面編程,經過預編譯方式和運行期動態代理實現程序功能的統一維護的一種技術。AOP是OOP(面向對象編程)的延續,是軟件開發中的一個熱點,也是Spring框架中的一個重要內容,是函數式編程的一種衍生範型。利用AOP能夠對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度下降,提升程序的可重用性,同時提升了開發的效率。spring
l AOP採起橫向抽取機制,取代了傳統縱向繼承體系重複性代碼編程
l 經典應用:事務管理、性能監視、安全檢查、緩存 、日誌等緩存
l Spring AOP使用純Java實現,不須要專門的編譯過程和類加載器,在運行期經過代理方式向目標類織入加強代碼安全
l AspectJ是一個基於Java語言的AOP框架,Spring2.0開始,Spring AOP引入對Aspect的支持,AspectJ擴展了Java語言,提供了一個專門的編譯器,在編譯時提供橫向代碼的織入框架
l aop底層將採用代理機制進行實現。函數式編程
l 接口 + 實現類 :spring採用 jdk 的動態代理Proxy。函數
l 實現類:spring 採用 cglib字節碼加強。性能
1.target:目標類,須要被代理的類。例如:UserServicespa
2.Joinpoint(鏈接點):所謂鏈接點是指那些可能被攔截到的方法。例如:全部的方法3d
3.PointCut 切入點:已經被加強的鏈接點。例如:addUser()
4.advice 通知/加強,加強代碼。例如:after、before
5. Weaving(織入):是指把加強advice應用到目標對象target來建立新的代理對象proxy的過程.
6.proxy 代理類
7. Aspect(切面): 是切入點pointcut和通知advice的結合
一個線是一個特殊的面。
一個切入點和一個通知,組成成一個特殊的面。