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

AOP編程的基本概念與idea編輯器的配合體驗(yàn)過程

 更新時(shí)間:2025年08月16日 10:06:00   作者:RR1335  
文章簡要介紹了AOP基礎(chǔ)概念,包括Before/Around通知、PointCut切入點(diǎn)、Advice通知體、JoinPoint連接點(diǎn)等,說明它們?nèi)绾瓮ㄟ^切點(diǎn)表達(dá)式(如*、..)關(guān)聯(lián)目標(biāo)方法(DeptServiceImpl),實(shí)現(xiàn)公共邏輯抽取與模塊化

初始化一個(gè)基礎(chǔ)的 AOP 程序

// 作為演示程序,沒有更具體的方法體

@Slf4j
@Component
@Aspect
public class TryAspect {

    @Before("execution(* biz.baijing.service.impl.DeptServiceImpl.*(..))")      // * 任意方法 , .. 形參任意
    public void before(){
        log.info("Before ...");
    }

    public void after(){
        log.info("After ...");
    }

    public void around(){
        log.info("Around before ...");

        // 調(diào)用目標(biāo)方法


        log.info("around after");
    }

    public void afterReturning(){
        log.info("AfterReturning ...");
    }

    public void afterThrowing(){
        log.info("After Throwing ...");
    }

}

Before

注意編輯器這個(gè)位置的 m 的變化。

點(diǎn)擊 m 提示了 

@Before("execution(* biz.baijing.service.impl.DeptServiceImpl.*(..))") 

切面目標(biāo)的方法。

Around

before 是半圓;around 是完整的圓形。

同樣點(diǎn)擊會(huì)出現(xiàn) execution 的指向的目標(biāo)方法

注解: m = methods

對 around 方法,完善之后

    @Around("execution(* biz.baijing.service.impl.DeptServiceImpl.*(..))")
    public Object around(ProceedingJoinPoint proceedingjoinPoint) throws Throwable{
        log.info("Around before ...");

        // 調(diào)用目標(biāo)方法
        Object proceed = proceedingjoinPoint.proceed();

        log.info("around after");
        return proceed;
    }

Advise — 通知

方法體,是抽取的一組公共的實(shí)現(xiàn)邏輯。

        log.info("Around before ...");

        // 調(diào)用目標(biāo)方法
        Object proceed = proceedingjoinPoint.proceed();

        log.info("around after");
        return proceed;

PointCut — 切入點(diǎn)

方法實(shí)際針對的目標(biāo)方法的引入,是AOP方法和目標(biāo)類方法的連接;

通過切入點(diǎn)表達(dá)式關(guān)聯(lián)。

"execution(* biz.baijing.service.impl.DeptServiceImpl.*(..))"

備注: *  : 所有 DeptServiceImpl 下的方法 ; .. : 形參任意。

Acpect — 切面

advise 和 pointcut 的連接。

    @Around("execution(* biz.baijing.service.impl.DeptServiceImpl.*(..))")
    public Object around(ProceedingJoinPoint proceedingjoinPoint) throws Throwable{
        log.info("Around before ...");

        // 調(diào)用目標(biāo)方法
        Object proceed = proceedingjoinPoint.proceed();

        log.info("around after");
        return proceed;
    }

描述這個(gè)方法的類,就叫: 切面類。

@Slf4j
@Component
@Aspect
public class TryAspect {

    @Before("execution(* biz.baijing.service.impl.DeptServiceImpl.*(..))")      // * 任意方法 , .. 形參任意
    public void before(){
        log.info("Before ...");
    }

    public void after(){
        log.info("After ...");
    }

    @Around("execution(* biz.baijing.service.impl.DeptServiceImpl.*(..))")
    public Object around(ProceedingJoinPoint proceedingjoinPoint) throws Throwable{
        log.info("Around before ...");

        // 調(diào)用目標(biāo)方法
        Object proceed = proceedingjoinPoint.proceed();

        log.info("around after");
        return proceed;
    }

    public void afterReturning(){
        log.info("AfterReturning ...");
    }

    public void afterThrowing(){
        log.info("After Throwing ...");
    }

}

TryAspect —— 切面類。

Target — 目標(biāo)對象

biz.baijing.service.impl.DeptServiceImpl

DeptServiceImpl —— 就是目標(biāo)對象。

JoinPoint — 連接點(diǎn)

被 AOP 控制的對象方法,即:

biz.baijing.service.impl.DeptServiceImpl

下的所有方法

這里被 紅色 m 標(biāo)識(shí)的方法就是 JoinPoint 。

結(jié)果

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 通過入門demo簡單了解netty使用方法

    通過入門demo簡單了解netty使用方法

    這篇文章主要介紹了通過入門demo簡單了解netty使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 深入理解Java設(shè)計(jì)模式之建造者模式

    深入理解Java設(shè)計(jì)模式之建造者模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之建造者模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供X大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2021-11-11
  • 使用java技術(shù)抓取網(wǎng)站上彩票雙色球信息詳解

    使用java技術(shù)抓取網(wǎng)站上彩票雙色球信息詳解

    這篇文章主要介紹了使用java技術(shù)抓取網(wǎng)站上彩票雙色球信息詳解,web結(jié)果由html+js+css組成,html結(jié)構(gòu)都有一定的規(guī)范,數(shù)據(jù)動(dòng)態(tài)交互可以通過js實(shí)現(xiàn)。,需要的朋友可以參考下
    2019-06-06
  • IDEA下SpringBoot指定環(huán)境、配置文件啟動(dòng)操作過程

    IDEA下SpringBoot指定環(huán)境、配置文件啟動(dòng)操作過程

    這篇文章主要介紹了IDEA下SpringBoot指定環(huán)境、配置文件啟動(dòng)過程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • Spring?Boot快速入門、應(yīng)用分析及常用注解示例詳解

    Spring?Boot快速入門、應(yīng)用分析及常用注解示例詳解

    Spring?Boot是一個(gè)基于Spring框架的開源Java框架,旨在簡化Spring?應(yīng)用程序的開發(fā)過程,本文介紹Spring?Boot快速入門、應(yīng)用分析、常用注解,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • Java數(shù)據(jù)結(jié)構(gòu)中雙向鏈表的實(shí)現(xiàn)

    Java數(shù)據(jù)結(jié)構(gòu)中雙向鏈表的實(shí)現(xiàn)

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)中雙向鏈表的實(shí)現(xiàn),雙向鏈表是一種常見的數(shù)據(jù)結(jié)構(gòu),它允許在鏈表中的任意位置進(jìn)行高效的插入和刪除操作,需要的朋友可以參考下
    2022-05-05
  • SpringCloud @RefreshScope注解源碼層面深入分析

    SpringCloud @RefreshScope注解源碼層面深入分析

    @RefreshScope注解能幫助我們做局部的參數(shù)刷新,但侵入性較強(qiáng),需要開發(fā)階段提前預(yù)知可能的刷新點(diǎn),并且該注解底層是依賴于cglib進(jìn)行代理的,所以不要掉入cglib的坑,出現(xiàn)刷了也不更新情況
    2023-04-04
  • Java數(shù)據(jù)結(jié)構(gòu)之常見排序算法(下)

    Java數(shù)據(jù)結(jié)構(gòu)之常見排序算法(下)

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之常見排序算法(下),與之相對有(上),想了解的朋友可以去本網(wǎng)站掃搜,在這兩篇文章里涵蓋關(guān)于八大排序算法的所有內(nèi)容,需要的朋友可以參考下
    2023-01-01
  • mybatis-generator 修改表結(jié)構(gòu)后實(shí)體不更新問題及解決方法

    mybatis-generator 修改表結(jié)構(gòu)后實(shí)體不更新問題及解決方法

    本文主要介紹了如何在MyBatis Generator中修改表結(jié)構(gòu)后更新實(shí)體類的問題,并提供了解決方案,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-04-04
  • Spring中@RabbitHandler和@RabbitListener的區(qū)別詳析

    Spring中@RabbitHandler和@RabbitListener的區(qū)別詳析

    @RabbitHandler是用于處理消息的方法注解,它與@RabbitListener注解一起使用,這篇文章主要給大家介紹了關(guān)于Spring中@RabbitHandler和@RabbitListener區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2024-02-02

最新評(píng)論

兴和县| 南充市| 长兴县| 渭南市| 尚志市| 北宁市| 桂林市| 平顶山市| 邢台县| 麻栗坡县| 淄博市| 灵寿县| 天台县| 铜鼓县| 青海省| 屯留县| 彩票| 平舆县| 泸溪县| 色达县| 定边县| 垫江县| 平度市| 洛宁县| 胶南市| 诸暨市| 奎屯市| 曲周县| 电白县| 旺苍县| 林州市| 广河县| 长汀县| 大埔区| 成武县| 正阳县| 中卫市| 南江县| 忻州市| 鹤峰县| 康定县|