最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Aop組成部分及實(shí)現(xiàn)步驟

 更新時(shí)間:2023年08月11日 11:26:15   作者:將船買酒白云邊  
面向切面編程,是對(duì)面向?qū)ο缶幊痰囊环N補(bǔ)充,是一種編程思想,是對(duì)某一類的事情的集中處理,這篇文章主要介紹了Spring Aop組成部分及實(shí)現(xiàn)步驟,需要的朋友可以參考下

Spring Aop

(Aspect orirnted Programming)面向切面編程,是對(duì)面向?qū)ο缶幊痰囊环N補(bǔ)充,是一種編程思想,是對(duì)某一類的事情的集中處理。

比如用戶登錄狀態(tài)的驗(yàn)證狀態(tài),在之前寫servlet版本的博客系統(tǒng),這里就有一個(gè)登錄驗(yàn)證而且是在每一個(gè)頁(yè)面都添加了一個(gè)登錄驗(yàn)證,在使用Aop后,只需要寫一個(gè)類就可以解決這個(gè)問(wèn)題。

Aop 組成

1.切面( Aspect

定義的是事件, Aop 實(shí)現(xiàn)了某個(gè)功能的集合。

ex:用戶登錄校驗(yàn)

2.切點(diǎn)( Pointcut

定義事件的規(guī)則。

ex:定義用戶登錄攔截規(guī)則,那些接口判斷用戶登錄權(quán)限

3.通知( Advice

AOP具體的執(zhí)行方法。

  • 前置通知
  • 后置通知
  • 環(huán)繞通知
  • 異常通知
  • 返回通知

ex:獲取用戶登錄信息,如果已經(jīng)獲取說(shuō)明已經(jīng)是登陸狀態(tài),否則未登錄。

4.鏈接點(diǎn)( Jion Poit

有可能觸發(fā)切點(diǎn)的所有點(diǎn),這個(gè)點(diǎn)可以是方法調(diào)用,也可以是拋出異?;蛘呤切薷淖侄?。

ex:所有接口

實(shí)現(xiàn) AOP 步驟:

1.添加依賴

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>

2.定義切面

@Aspect //定義切面
@Component
public class UserAspect {
}

3.定義切點(diǎn)

@Aspect //定義切面
@Component
public class UserAspect {
    @Pointcut("execution(* com.example.demo.controller.UserController.*(..)))")
    //空方法,主要是一個(gè)標(biāo)識(shí)作用
    public void pointcut(){}
}

定義目錄語(yǔ)法格式是 AspectJ 支持三種通配符

* :匹配任意字符,只可以匹配一個(gè)元素。

.. :匹配任意字符,可以匹配多個(gè)元素,表示類時(shí),必須和 * 聯(lián)合使用。

+ :表示按照類型匹配指定所有類,必須跟在類的后面。如: com.java.Car+ 表示繼承該類的所有方法

4.通知

具體實(shí)現(xiàn)方法

@RestController
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/grtUser")
    public String getUser(){
        System.out.println("do getUser");
        return "get User";
    }
    @RequestMapping("/delUser")
    public String delUser(){
        System.out.println("do delUser");
        return "delUser";
    }
}

實(shí)現(xiàn)通知

@Aspect //定義切面
@Component
public class UserAspect {
    @Pointcut("execution(* com.example.demo.controller.UserController.*(..)))")//切點(diǎn),括號(hào)中填寫目錄名稱,在執(zhí)行時(shí)會(huì)自動(dòng)掃描方法,這?使? AspectJ 表達(dá)式語(yǔ)法
    public void pointcut(){
		//目標(biāo)方法,這?是空方法,主要是一個(gè)標(biāo)識(shí)作用
    }
    //前置通知
    @Before("pointcut()")
    public void doBefore(){
        System.out.println("執(zhí)行了前置通知");
    }
    //后置通知
    @After("pointcut()")
    public void doAfter(){
        System.out.println("執(zhí)行了后置通知");
    }
    //環(huán)繞通知
    @Around("pointcut()")
    public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("環(huán)繞通知之前");
        //執(zhí)行目標(biāo)方法
        Object object = joinPoint.proceed();
        System.out.println("環(huán)繞通知之后");
        return object;
    }
    @AfterReturning("pointcut()")
    public void doAfterReturning(){
        System.out.println("執(zhí)行了返回方法");
    }
    @AfterThrowing("pointcut()")
    public void doAfterThrowing(){
        System.out.println("執(zhí)行了拋出異常方法");
    }
}

四種通知方法:

前置通知:在執(zhí)行方法之前執(zhí)行的方法

后置通知:在執(zhí)行完前面所有方法之后執(zhí)行

環(huán)繞通知:通知包裹內(nèi)被通知的方法,在被通知的方法之后和調(diào)用之前執(zhí)行的自定義的行為。

返回通知:通知方法會(huì)在目標(biāo)方法返回之后執(zhí)行

異常通知:通知方法會(huì)在目標(biāo)方法拋出異常后執(zhí)行

AOP動(dòng)態(tài)代理(實(shí)現(xiàn)原理)

Spring 動(dòng)態(tài)代理組成:

JDK Proxy ------》 代理對(duì)象必須實(shí)現(xiàn)接口,才可以使用 JDK Proxy

CGLIB ------》通過(guò)實(shí)現(xiàn)代理類的子類來(lái)實(shí)現(xiàn)動(dòng)態(tài)代理------》注意:被final修飾的類是不能被代理的

課件

兩個(gè)代理區(qū)別

來(lái)源不同 :JDK來(lái)源于Java本地資源,CGLib是第三方資源實(shí)現(xiàn)不同 :JDK proxy 需要代理類實(shí)現(xiàn)接口才可以實(shí)現(xiàn)代理 CGLIB是通過(guò)實(shí)現(xiàn)代理類的子類來(lái)完成動(dòng)態(tài)代理性能不同 : JDK 7+ JDK proxy 性能高與CGlib 。

到此這篇關(guān)于Spring Aop組成部分的文章就介紹到這了,更多相關(guān)Spring Aop組成內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot實(shí)現(xiàn)定時(shí)任務(wù)動(dòng)態(tài)管理示例

    SpringBoot實(shí)現(xiàn)定時(shí)任務(wù)動(dòng)態(tài)管理示例

    這篇文章主要為大家介紹了SpringBoot實(shí)現(xiàn)定時(shí)任務(wù)動(dòng)態(tài)管理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • java編程創(chuàng)建型設(shè)計(jì)模式單例模式的七種示例

    java編程創(chuàng)建型設(shè)計(jì)模式單例模式的七種示例

    這篇文章主要為大家介紹了java編程中創(chuàng)建型設(shè)計(jì)模式之單例模式的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • 字節(jié)二面SpringBoot可以同時(shí)處理多少請(qǐng)求

    字節(jié)二面SpringBoot可以同時(shí)處理多少請(qǐng)求

    這篇文章主要為大家介紹了字節(jié)二面之SpringBoot可以同時(shí)處理多少請(qǐng)求面試分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • java線程的基礎(chǔ)實(shí)例解析

    java線程的基礎(chǔ)實(shí)例解析

    java中線程的基本方法的熟練使用是精通多線程編程的必經(jīng)之路,線程相關(guān)的基本方法有wait,notify,notifyAll,sleep,join,yield等,本文淺要的介紹一下它們的使用方式
    2021-06-06
  • Java中輸入與輸出的方法總結(jié)

    Java中輸入與輸出的方法總結(jié)

    這篇文章主要為大家總結(jié)了一下Java中輸入與輸出的三種方法,文中通過(guò)示例詳細(xì)的講解了一下這些方法的使用,需要的小伙伴可以參考一下
    2022-04-04
  • Maven Profile多環(huán)境構(gòu)建實(shí)戰(zhàn)指南

    Maven Profile多環(huán)境構(gòu)建實(shí)戰(zhàn)指南

    在現(xiàn)代企業(yè)級(jí)Java項(xiàng)目開(kāi)發(fā)中,面對(duì)開(kāi)發(fā)(dev)、測(cè)試(test)、預(yù)發(fā)布(staging)、生產(chǎn)(prod)等多套環(huán)境的差異化配置管理,本文將從實(shí)戰(zhàn)角度深入剖析Maven Profile的多環(huán)境構(gòu)建體系,需要的朋友可以參考下
    2025-05-05
  • Java實(shí)現(xiàn)連接kubernates集群的兩種方式詳解

    Java實(shí)現(xiàn)連接kubernates集群的兩種方式詳解

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)連接kubernates集群的兩種方式,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • java使用Apache工具集實(shí)現(xiàn)ftp文件傳輸代碼詳解

    java使用Apache工具集實(shí)現(xiàn)ftp文件傳輸代碼詳解

    這篇文章主要介紹了java使用Apache工具集實(shí)現(xiàn)ftp文件傳輸代碼詳解,分享了詳細(xì)連接ftp server和上傳文件,下載文件的代碼,以及結(jié)果展示,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • 詳解Spring系列之@ComponentScan自動(dòng)掃描組件

    詳解Spring系列之@ComponentScan自動(dòng)掃描組件

    這篇文章主要介紹了Spring @ComponentScan自動(dòng)掃描組件使用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • Java鏈表(Linked List)基本原理與實(shí)現(xiàn)方法入門示例

    Java鏈表(Linked List)基本原理與實(shí)現(xiàn)方法入門示例

    這篇文章主要介紹了Java鏈表(Linked List)基本原理與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Java鏈表(Linked List)的功能、原理、實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下
    2020-03-03

最新評(píng)論

合阳县| 四子王旗| 天柱县| 丰都县| 牡丹江市| 兴义市| 延长县| 河间市| 通辽市| 宁国市| 闵行区| 牙克石市| 遂昌县| 五大连池市| 花莲县| 抚顺县| 报价| 邵东县| 松阳县| 花莲市| 商水县| 洛阳市| 页游| 荃湾区| 九江市| 三门峡市| 西乌珠穆沁旗| 瓦房店市| 赤水市| 无极县| 安吉县| 华蓥市| 开江县| 宁国市| 田林县| 岳普湖县| 炎陵县| 锦屏县| 三门县| 化隆| 龙里县|