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

解決Aop @AfterReturning因返回類型不一致導(dǎo)致無法執(zhí)行切面代碼

 更新時間:2024年07月02日 14:31:28   作者:恐丶  
這篇文章主要介紹了解決Aop @AfterReturning因返回類型不一致導(dǎo)致無法執(zhí)行切面代碼問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Aop @AfterReturning因返回類型不一致導(dǎo)致無法執(zhí)行切面代碼

要做返回異常之后,所有操作回滾的操作,本來想著泛型用 Object 就表示所有返回類型是 CommonResult 并且加指定注解的都走這個通知的代碼,但是如下配置,無論如何也不生效

進入源碼里發(fā)現(xiàn),判斷是否執(zhí)行這個 advice 會判斷被注解的方法的返回類型和通知方法的參數(shù)泛型是否一致

解決方法

就是把 afterReturning 通知的參數(shù)的泛型去掉。

AOP @AfterReturning的使用

首先引入依賴

       <!--spring AOP的支持 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

定義一個注解作為切點

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface LogInfo {
    String value() default "";
}

寫aop實現(xiàn)

@Aspect
@Component
@Slf4j
public class LogInfoAspect {

    /**
    * 配置切點 切點為注解 意為有該注解的地方日志生效
    */
    @Pointcut("@annotation(com.example.myproject.annoation.LogInfo)")
    public void pointcut() { }

    /**
    * 定義切點,返回值為user,要與下面方法中的入?yún)⒚鹵ser保持一致
     * returning的是獲取到要提取日志的方法的返回值
    */
    @AfterReturning(pointcut = "pointcut()",returning = "user")
    public void afterReturning(Object user){
        User user1 = (User) user;
        log.info("用戶Id為:" + user1.getUserId());
        log.info("用戶名稱為:" + user1.getUserName());
    }
}

寫測試接口

    /**
     * aop測試
     * 這里的user類和aop實現(xiàn)類中定義的returning值 User 保持一致,這樣aop中才能正確讀取到返回值
     * @param
     * @return
     */
    @LogInfo
    @PostMapping("/aopTest")
    public String aopTest(@RequestBody User user){
        return user.getUserName();
    }

總結(jié)

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

相關(guān)文章

  • Java設(shè)計模式之代理模式與裝飾模式實例詳解

    Java設(shè)計模式之代理模式與裝飾模式實例詳解

    這篇文章主要介紹了Java設(shè)計模式之代理模式與裝飾模式,結(jié)合具體實例形式分析了代理模式與裝飾模式的概念、功能、java實現(xiàn)方法與相關(guān)使用注意事項,需要的朋友可以參考下
    2017-09-09
  • Java編程中void方法的學(xué)習(xí)教程

    Java編程中void方法的學(xué)習(xí)教程

    這篇文章主要介紹了Java編程中void方法的學(xué)習(xí)教程,包括對void方法進行單元測試,需要的朋友可以參考下
    2015-10-10
  • 用java實現(xiàn)學(xué)生信息管理系統(tǒng)

    用java實現(xiàn)學(xué)生信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • MybatisPlus的IPage失效的問題解決方案

    MybatisPlus的IPage失效的問題解決方案

    這篇文章主要介紹了MybatisPlus的IPage失效的問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 一文詳解Spring?Boot可以同時處理多少請求

    一文詳解Spring?Boot可以同時處理多少請求

    SpringBoot是一個流行的Java開發(fā)框架,它被廣泛用于構(gòu)建Web應(yīng)用程序,但是,開發(fā)人員通常會擔(dān)心它的性能問題,特別是在高負(fù)載條件下,Spring?Boot能夠同時處理多少請求是一個重要的問題,在本文中,我們將討論SpringBoot的請求處理能力,并介紹如何提高性能
    2023-10-10
  • java ThreadGroup的作用及方法詳解

    java ThreadGroup的作用及方法詳解

    這篇文章主要介紹了java ThreadGroup的作用及方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • springBoot  創(chuàng)建定時任務(wù)過程詳解

    springBoot 創(chuàng)建定時任務(wù)過程詳解

    這篇文章主要介紹了springBoot 創(chuàng)建定時任務(wù)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Java求最小生成樹的兩種算法詳解

    Java求最小生成樹的兩種算法詳解

    最小生成樹(Minimum Spanning Tree):在連通圖的所有生成樹中,所有邊的權(quán)值和最小的生成樹,稱為最小生成樹。這篇文章主要介紹了求最小生成樹的兩種方法:Prim算法和Kruskal算法,需要的可以參考一下
    2022-01-01
  • Java Spring Boot實現(xiàn)簡易掃碼登錄詳解

    Java Spring Boot實現(xiàn)簡易掃碼登錄詳解

    這篇文章主要為大家詳細(xì)介紹了java Spring Boot實現(xiàn)app掃碼登錄功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-09-09
  • Mybatis核心配置文件、默認(rèn)類型別名、Mybatis獲取參數(shù)值的兩種方式(實例代碼)

    Mybatis核心配置文件、默認(rèn)類型別名、Mybatis獲取參數(shù)值的兩種方式(實例代碼)

    這篇文章主要介紹了Mybatis核心配置文件、默認(rèn)類型別名、Mybatis獲取參數(shù)值的兩種方式,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-03-03

最新評論