日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

AOP和Spring AOP介绍

發(fā)布時間:2024/7/5 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AOP和Spring AOP介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

AOP和Spring AOP介紹

文章目錄

  • AOP和Spring AOP介紹
    • 一.AOP簡介
    • 二. 傳統(tǒng)開發(fā)存在的弊端
    • 三. AOP實(shí)現(xiàn)原理
    • 四.Spring AOP
    • 五.AOP相關(guān)術(shù)語

一.AOP簡介

  • AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程。是OOP的延續(xù),是軟件開發(fā)中的一個熱點(diǎn),也是Spring框架中的一個重要內(nèi)容,函數(shù)式編程的一種衍生范型;
  • AOP 通過預(yù)編譯方式和運(yùn)行期動態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù);
  • 利用AOP可以對業(yè)務(wù)邏輯的各個部分進(jìn)行隔離,從而使得業(yè)務(wù)邏輯各部分之間的耦合度降低,提高程序的可重用性,同時提高了開發(fā)的效率。

二. 傳統(tǒng)開發(fā)存在的弊端

假設(shè)你正在開發(fā)的項(xiàng)目中需要在保存之前添加一個功能(例如權(quán)限校驗(yàn)),此時需要手動在項(xiàng)目中所有保存功能之前添加權(quán)限校驗(yàn),我們可以通過抽取一個基類,里面寫了權(quán)限校驗(yàn)功能,讓所有類繼承此類,這是傳統(tǒng)面向?qū)ο罄^承的方式開發(fā),需要改動大量代碼;

我們的目標(biāo): 不破壞原來的類,生成一個代理類,在原來類的基礎(chǔ)上進(jìn)行增強(qiáng),可以實(shí)現(xiàn)隨時添加,隨時取消添加的功能

解決: AOP通過代理類采用橫向抽取機(jī)制取代了傳統(tǒng)縱向繼承

三. AOP實(shí)現(xiàn)原理

  • JDK動態(tài)代理
    JDK動態(tài)代理的實(shí)現(xiàn)是在運(yùn)行時,根據(jù)一組接口定義,使用Proxy、InvocationHandler等工具類去生成一個代理類和代理類實(shí)例。
  • cglib動態(tài)代理
    cglib是一個第三方開源代碼生成類庫(使用時一定要在spring的核心包當(dāng)中引入cglib),cglib動態(tài)添加類的屬性和方法,采用的是繼承方式來產(chǎn)生的代理對象
  • 四.Spring AOP

    • Spring使用這種思想最好的框架
    • Spring的AOP有自己的實(shí)現(xiàn)方式,但是這種方式非常繁瑣,因此Spring放棄了自己傳統(tǒng)的方式 ,引入AspectJ作為自身AOP的開發(fā)
    • AspectJ 是一個AOP的框架

    五.AOP相關(guān)術(shù)語

  • Joinpoint:連接點(diǎn)
    (1)可以被攔截到的方法
    (2) 能夠被增強(qiáng)的方法,這些方法就可以稱為是連接點(diǎn)

    其中save() ,delete() ,update() ,find()都是 Joinpoint連接點(diǎn)


  • Pointcut:切入點(diǎn)
    真正被攔截(增強(qiáng))的方法

    其中的save()方法就是 Pointcut切入點(diǎn)


  • Advice:通知
    增加的內(nèi)容,通常都是封裝成一個方法, 這個方法我們就稱為通知

    其中的checkPrivilege()方法就是Advice通知

  • Introduction:引介
    (1)類層面的增加
    (2)給原有的類添加一些新的屬性方法
    (3)在開發(fā)中通常都是給某個方法進(jìn)行增加

  • Target:被增加的對象

    其中GoodsDao就是Target被增加的對象

  • Weaving:織入
    將通知應(yīng)用到目標(biāo)對象的過程

  • Proxy:代理對象

  • Aspect:切面
    多個通知和多個切入點(diǎn)的集合
  • 總結(jié)

    以上是生活随笔為你收集整理的AOP和Spring AOP介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。