當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
AOP和Spring AOP介绍
生活随笔
收集整理的這篇文章主要介紹了
AOP和Spring AOP介绍
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
AOP和Spring AOP介紹
文章目錄
- AOP和Spring AOP介紹
- 一.AOP簡介
- 二. 傳統開發存在的弊端
- 三. AOP實現原理
- 四.Spring AOP
- 五.AOP相關術語
一.AOP簡介
- AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程。是OOP的延續,是軟件開發中的一個熱點,也是Spring框架中的一個重要內容,函數式編程的一種衍生范型;
- AOP 通過預編譯方式和運行期動態代理實現程序功能的統一維護;
- 利用AOP可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程序的可重用性,同時提高了開發的效率。
二. 傳統開發存在的弊端
假設你正在開發的項目中需要在保存之前添加一個功能(例如權限校驗),此時需要手動在項目中所有保存功能之前添加權限校驗,我們可以通過抽取一個基類,里面寫了權限校驗功能,讓所有類繼承此類,這是傳統面向對象繼承的方式開發,需要改動大量代碼;
我們的目標: 不破壞原來的類,生成一個代理類,在原來類的基礎上進行增強,可以實現隨時添加,隨時取消添加的功能
解決: AOP通過代理類采用橫向抽取機制取代了傳統縱向繼承
三. AOP實現原理
JDK動態代理的實現是在運行時,根據一組接口定義,使用Proxy、InvocationHandler等工具類去生成一個代理類和代理類實例。
cglib是一個第三方開源代碼生成類庫(使用時一定要在spring的核心包當中引入cglib),cglib動態添加類的屬性和方法,采用的是繼承方式來產生的代理對象
四.Spring AOP
- Spring使用這種思想最好的框架
- Spring的AOP有自己的實現方式,但是這種方式非常繁瑣,因此Spring放棄了自己傳統的方式 ,引入AspectJ作為自身AOP的開發
- AspectJ 是一個AOP的框架
五.AOP相關術語
Joinpoint:連接點
(1)可以被攔截到的方法
(2) 能夠被增強的方法,這些方法就可以稱為是連接點
其中save() ,delete() ,update() ,find()都是 Joinpoint連接點
Pointcut:切入點
真正被攔截(增強)的方法
其中的save()方法就是 Pointcut切入點
增加的內容,通常都是封裝成一個方法, 這個方法我們就稱為通知
其中的checkPrivilege()方法就是Advice通知
(1)類層面的增加
(2)給原有的類添加一些新的屬性方法
(3)在開發中通常都是給某個方法進行增加
其中GoodsDao就是Target被增加的對象
將通知應用到目標對象的過程
多個通知和多個切入點的集合
總結
以上是生活随笔為你收集整理的AOP和Spring AOP介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Zookeeper默认占用8080端口问
- 下一篇: JavaScript每日学习日记(1)