亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java的Spring?AOP詳細講解

 更新時間:2022年02月22日 11:16:44   作者:printf("小白");  
章主要為大家詳細介紹了Java的Spring?AOP,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

什么是AOP&作用

  • AOP 為 Aspect Oriented Programming 的縮寫,意思為面向切面編程,是通過預編譯方式和運行期動態(tài)代理實現程序功能的統(tǒng)一維護的一種技術。
  • AOP 是 OOP 的延續(xù),是函數式編程的一種衍生范型。利用AOP可以對業(yè)務邏輯的各個部分進行隔離,從而使得業(yè)務邏輯各部分之間的耦合度降低,提高程序的可重用性,同時提高了開發(fā)的效率
  • 作用:在程序運行期間,在不修改源碼的情況下對方法進行功能增強

AOP的動態(tài)代理技術

  • 常用的動態(tài)代理技術

1.JDK代理,基于接口的動態(tài)代理

在這里插入圖片描述

2.cglib代理,基于父類的動態(tài)代理技術

在這里插入圖片描述

基于JDK的動態(tài)代理

動態(tài)代理的實現

在這里插入圖片描述

單獨實現增強方法

在這里插入圖片描述

running方法

在這里插入圖片描述

cglib動態(tài)代理

不需要寫接口文件其他增強方法,目標方法復制

在這里插入圖片描述

AOP相關概念

Target(目標對象):代理的目標對象

Proxy (代理):一個類被 AOP 織入增強后,就產生一個結果代理類

Joinpoint(連接點):所謂連接點是指那些被攔截到的點。在spring中,這些點指的是方法,因為spring只支持方法類型的連接點

Pointcut(切入點):所謂切入點是指我們要對哪些 Joinpoint 進行攔截的定義

Advice(通知/ 增強):所謂通知是指攔截到 Joinpoint 之后所要做的事情就是通知

Aspect(切面):是切入點和通知(引介)的結合

Weaving(織入):是指把增強應用到目標對象來創(chuàng)建新的代理對象的過程。spring采用動態(tài)代理織入,而AspectJ采用編譯期織入和類裝載期織入

AOP開發(fā)明確事項

需要編寫的內容

  • 編寫業(yè)務核心代碼(目標方法)
  • 編寫切面類(增強功能方法)
  • 在配置文件中。配置織入關系

AOP技術實現的內容

Spring 框架監(jiān)控切入點方法的執(zhí)行。一旦監(jiān)控到切入點方法被運行,使用代理機制,動態(tài)創(chuàng)建目標對象的代理對象,根據通知類別,在代理對象的對應位置,將通知對應的功能織入,完成完整的代碼邏輯運行。

AOP 底層使用哪種代理方式

在 spring 中,框架會根據目標類是否實現了接口來決定采用哪種動態(tài)代理的方式(jdk是接口代理 cglib是不需要接口的)

基于XML的AOP開發(fā)

導入AOP相關坐標

在這里插入圖片描述

創(chuàng)建目標接口和目標類

在這里插入圖片描述

在這里插入圖片描述

創(chuàng)建切面類

在這里插入圖片描述

將目標類和切面類的對象創(chuàng)建權交給Spring

在applicationContext.xml中配置織入關系

在這里插入圖片描述

測試代碼

在這里插入圖片描述

切面表達式

  • 表達式語法

execution([修飾符] 返回值類型 包名.類名.方法名(參數))

execution(public void com.itheima.aop.Target.method())

訪問修飾符可以省略

execution(void com.itheima.aop.Target.*(..))

包名與類名之間一個點 . 代表當前包下的類,兩個點 … 表示當前包及其子包下的類

execution(* com.itheima.aop.*.*(..))

參數列表可以使用兩個點 … 表示任意個數,任意類型的參數列表

execution(* com.itheima.aop..*.*(..))

通知類型

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

切點表達式抽取

在這里插入圖片描述

基于注解的AOP開發(fā)

創(chuàng)建目標接口和目標類(內部有切點)

在這里插入圖片描述

創(chuàng)建切面類(內部有增強方法)

在這里插入圖片描述

將目標類和切面類的對象創(chuàng)建權交給Spring 在切面類中使用注解配置織入關系 在配置文件中開啟組件掃描和AOP自動代理

在這里插入圖片描述

測試

在這里插入圖片描述

注解通知類型和切面表達式的抽取

類型

在這里插入圖片描述

在這里插入圖片描述

抽取表達式

在這里插入圖片描述

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!  

相關文章

  • SpringBoot disruptor高性能隊列使用

    SpringBoot disruptor高性能隊列使用

    這篇文章主要介紹了SpringBoot disruptor高性能隊列使用,Disruptor是英國外匯交易公司LMAX開發(fā)的一個高性能隊列,研發(fā)的初衷是解決內存隊列的延遲問題
    2023-02-02
  • Java實現隊列的三種方法集合

    Java實現隊列的三種方法集合

    這篇文章主要介紹了Java實現隊列的三種方法集合,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Java面向對象程序設計:抽象類,接口用法實例分析

    Java面向對象程序設計:抽象類,接口用法實例分析

    這篇文章主要介紹了Java面向對象程序設計:抽象類,接口用法,結合實例形式分析了java抽象類與接口相關概念、原理、用法與操作注意事項,需要的朋友可以參考下
    2020-04-04
  • 關于Java的二叉樹、紅黑樹、B+樹詳解

    關于Java的二叉樹、紅黑樹、B+樹詳解

    這篇文章主要介紹了關于Java的二叉樹、紅黑樹、B+樹詳解,能同時具備數組查找快的優(yōu)點以及鏈表插入和刪除快的優(yōu)點的數據結構就是樹,需要的朋友可以參考下
    2023-05-05
  • Java實現鎖定某個變量的幾種方式示例詳解

    Java實現鎖定某個變量的幾種方式示例詳解

    這篇文章主要為大家介紹了Java實現鎖某個變量的幾種方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Java中關于二叉樹的概念以及搜索二叉樹詳解

    Java中關于二叉樹的概念以及搜索二叉樹詳解

    二叉樹是一種很有用的非線性結構,日常的開發(fā)中常會用到,關于二叉樹的概念以及搜索二叉樹本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • 解決Spring Cloud feign GET請求無法用實體傳參的問題

    解決Spring Cloud feign GET請求無法用實體傳參的問題

    這篇文章主要介紹了解決Spring Cloud feign GET請求無法用實體傳參的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 線上Java程序占用CPU過高解決方案

    線上Java程序占用CPU過高解決方案

    這篇文章主要介紹了線上Java程序占用CPU過高解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • 本真的REST架構風格理解

    本真的REST架構風格理解

    這篇文章主要為大家介紹了本真的REST架構風格的深入理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • 32位和64位皆適用的MyEclipse安裝教程

    32位和64位皆適用的MyEclipse安裝教程

    這篇文章主要為大家詳細介紹了32位和64位皆適用的MyEclipse安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10

最新評論