欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2025年08月16日 10:06:00   作者:RR1335  
文章簡(jiǎn)要介紹了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

對(duì) 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í)際針對(duì)的目標(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)對(duì)象

biz.baijing.service.impl.DeptServiceImpl

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

JoinPoint — 連接點(diǎn)

被 AOP 控制的對(duì)象方法,即:

biz.baijing.service.impl.DeptServiceImpl

下的所有方法

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

結(jié)果

總結(jié)

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

相關(guān)文章

  • 解決SpringBoot啟動(dòng)報(bào)錯(cuò):Failed?to?load?property?source?from?location?'classpath:/application.yml'問題

    解決SpringBoot啟動(dòng)報(bào)錯(cuò):Failed?to?load?property?source?from?l

    這篇文章主要介紹了解決SpringBoot啟動(dòng)報(bào)錯(cuò):Failed?to?load?property?source?from?location?'classpath:/application.yml'問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • spring-boot整合dubbo:Spring-boot-dubbo-starter

    spring-boot整合dubbo:Spring-boot-dubbo-starter

    這篇文章主要介紹了spring-boot整合dubbo:Spring-boot-dubbo-starter的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-05-05
  • springboot2 生產(chǎn)部署注意事項(xiàng)及示例代碼

    springboot2 生產(chǎn)部署注意事項(xiàng)及示例代碼

    這篇文章主要介紹了springboot2 生產(chǎn)部署注意事項(xiàng)及示例代碼,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • Java算法之最長(zhǎng)公共子序列問題(LCS)實(shí)例分析

    Java算法之最長(zhǎng)公共子序列問題(LCS)實(shí)例分析

    這篇文章主要介紹了Java算法之最長(zhǎng)公共子序列問題(LCS),結(jié)合實(shí)例形式分析了最長(zhǎng)公共子序列的原理及問題解決方法,需要的朋友可以參考下
    2017-11-11
  • Java異常之圖書管理系統(tǒng)

    Java異常之圖書管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java異常之圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 最簡(jiǎn)單易懂的java數(shù)組排序方法整理

    最簡(jiǎn)單易懂的java數(shù)組排序方法整理

    這篇文章主要給大家整理介紹了最簡(jiǎn)單易懂的java數(shù)組排序方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 詳解Spring Boot中Controller用法

    詳解Spring Boot中Controller用法

    Controller是SpringBoot里最基本的組件,他的作用是把用戶提交來的請(qǐng)求通過對(duì)URL的匹配,分配個(gè)不同的接收器,再進(jìn)行處理,然后向用戶返回結(jié)果。下面通過本文給大家介紹Spring Boot中Controller用法,需要的朋友參考下
    2017-05-05
  • SpringBoot @Import與@Conditional注解使用詳解

    SpringBoot @Import與@Conditional注解使用詳解

    在了解spring boot自動(dòng)配置原理前,再來了解下兩個(gè)注解@Import注解和@Conditional注解,@Conditional是Spring4新提供的注解,它的作用是按照一定的條件進(jìn)行判斷,滿足條件給容器注冊(cè)bean
    2022-10-10
  • Spring中集成Groovy的四種方式(小結(jié))

    Spring中集成Groovy的四種方式(小結(jié))

    這篇文章主要介紹了Spring中集成Groovy的四種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • java實(shí)現(xiàn)批量導(dǎo)入.csv文件到mysql數(shù)據(jù)庫

    java實(shí)現(xiàn)批量導(dǎo)入.csv文件到mysql數(shù)據(jù)庫

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)批量導(dǎo)入.csv文件到mysql數(shù)據(jù)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08

最新評(píng)論