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

spring @AfterReturning返回值問(wèn)題

 更新時(shí)間:2024年05月10日 10:21:25   作者:巴中第一皇子  
這篇文章主要介紹了spring @AfterReturning返回值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

spring @AfterReturning返回值

@AfterReturning是用于做aop的,其中返回值的問(wèn)題,坑了我比較久,特地寫出來(lái)。

1. 正確的使用

@AfterReturning(value = "pointCut()", returning = "obj")
public Object doAfterReturning(JoinPoint joinPoint, Object obj) {
    // 正常情況下,我們想要修改obj,只需要強(qiáng)轉(zhuǎn)為對(duì)應(yīng)的對(duì)象,再重新設(shè)置值即可,如下
    User user = (User)obj;
    user.setName("test");
    return user;
}

2. 錯(cuò)誤的使用

@AfterReturning(value = "pointCut()", returning = "obj")
public Object doAfterReturning(JoinPoint joinPoint, Object obj) {
    // 直接修改了obj的引用地址
    User user = new User();
    obj = user;
    return obj;
}

區(qū)別就是方式一并沒有更改obj的引用指針地址,返回結(jié)果是更新了name屬性后的用戶

而方式二更改了obj引用指針,返回結(jié)果并不是新new的user對(duì)象,而是入?yún)bj對(duì)象

所以使用時(shí)要注意:

AfterReturning方法雖然能修改返回值,但是局限于相同的對(duì)象地址,即最后返回對(duì)象的引用地址和入?yún)⒌囊玫刂繁仨毾嗤?/p>

所以能修改返回值的也只有引用類型,基本類型是不允許的

@AfterReturning方法執(zhí)行了,但是切入方法沒執(zhí)行

首先,在一個(gè)批量插入的方法定義了切入點(diǎn)

    @Pointcut(value = "execution(* com.cases.dao.mapper.duty.DutyTableDao.insertBatch(..))")
    public void pointcut() {
        log.info("DutyDeleteInterceptor:pointcut");
    }

@AfterReturning方法可以正常進(jìn)入,但是批量插入insertBatch方法卻沒有執(zhí)行。

原因就在@Around注解方法

這是原來(lái)的代碼

@Around(value = "pointcut()")
public void methodAround(ProceedingJoinPoint joinPoint) throws Throwable {
    log.info("DutyDeleteInterceptor:methodAround");
}

修改后的代碼

    @Around(value = "pointcut()")
    public Object methodAround(ProceedingJoinPoint joinPoint) throws Throwable {
        log.info("DutyDeleteInterceptor:methodAround");
        return joinPoint.proceed();
    }

調(diào)試,成功。

小知識(shí):

 joinPoint.proceed() 的返回值是Object類型,Object result = joinPoint.proceed();

其實(shí)這句代碼的意思就是正常去執(zhí)行我們的業(yè)務(wù),返回值result,在錯(cuò)誤代碼中,返回值寫成了void,所以正常業(yè)務(wù)拿不到返回值了

總結(jié)

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

相關(guān)文章

  • 一文搞懂MyBatis多數(shù)據(jù)源Starter實(shí)現(xiàn)

    一文搞懂MyBatis多數(shù)據(jù)源Starter實(shí)現(xiàn)

    本文將實(shí)現(xiàn)一個(gè)MyBatis的Springboot的Starter包,引用這個(gè)Starter包后,僅需要提供少量配置信息,就能夠完成MyBatis多數(shù)據(jù)源的初始化和使用,需要的小伙伴可以參考一下
    2023-04-04
  • Java運(yùn)算符從見過(guò)到掌握下

    Java運(yùn)算符從見過(guò)到掌握下

    計(jì)算機(jī)的最基本用途之一就是執(zhí)行數(shù)學(xué)運(yùn)算,作為一門計(jì)算機(jī)語(yǔ)言,Java也提供了一套豐富的運(yùn)算符來(lái)操縱變量,本篇對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值,緊接上篇,需要的朋友可以參考下
    2021-09-09
  • Java的CollectionUtils工具類詳解

    Java的CollectionUtils工具類詳解

    這篇文章主要介紹了Java的CollectionUtils工具類詳解,CollectionUtils工具類是在apache下的,而不是springframework下的,個(gè)人覺得在真實(shí)項(xiàng)目中CollectionUtils,可以使你的代碼更加簡(jiǎn)潔和安全,需要的朋友可以參考下
    2023-05-05
  • java中l(wèi)ist使用時(shí)需避免的場(chǎng)景總結(jié)

    java中l(wèi)ist使用時(shí)需避免的場(chǎng)景總結(jié)

    眾所周知,Java為開發(fā)者提供了多種集合類的實(shí)現(xiàn),其中幾乎所有業(yè)務(wù)代碼都需要用到List,但List的錯(cuò)誤使用也會(huì)導(dǎo)致諸多問(wèn)題,所以本文我們就來(lái)看一看幾個(gè)錯(cuò)誤使用List的場(chǎng)景吧
    2023-10-10
  • Java中控制多線程順序執(zhí)行的六種實(shí)現(xiàn)方案

    Java中控制多線程順序執(zhí)行的六種實(shí)現(xiàn)方案

    在多線程編程中,線程的執(zhí)行順序本質(zhì)上是不確定的,由操作系統(tǒng)調(diào)度器決定,但在某些業(yè)務(wù)場(chǎng)景中,我們需要確保線程按照特定順序執(zhí)行,所以本文介紹了Java中控制多線程順序執(zhí)行的六種實(shí)現(xiàn)方案,需要的朋友可以參考下
    2025-09-09
  • Java throw和throws使用區(qū)別分析

    Java throw和throws使用區(qū)別分析

    這篇文章主要介紹了Java throw和throws使用區(qū)別分析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • MongoDB中ObjectId的誤區(qū)及引起的一系列問(wèn)題

    MongoDB中ObjectId的誤區(qū)及引起的一系列問(wèn)題

    這篇文章主要介紹了MongoDB中ObjectId的誤區(qū)及引起的一系列問(wèn)題,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-12-12
  • Java實(shí)現(xiàn)單詞倒序輸出

    Java實(shí)現(xiàn)單詞倒序輸出

    這篇文章主要介紹了Java實(shí)現(xiàn)單詞倒序輸出,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-08-08
  • Java?agent的入門與demo演示詳解

    Java?agent的入門與demo演示詳解

    Java?Agent?是?Java?1.5?版本之后引?的特性,其主要作?是在class被加載之前對(duì)其攔截,這篇文章主要介紹了agent的簡(jiǎn)單使用,需要的可以參考下
    2023-05-05
  • @Transaction,@Async在同一個(gè)類中注解失效的原因分析及解決

    @Transaction,@Async在同一個(gè)類中注解失效的原因分析及解決

    這篇文章主要介紹了@Transaction,@Async在同一個(gè)類中注解失效的原因分析及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評(píng)論

临潭县| 新余市| 平潭县| 米泉市| 肇东市| 遂川县| 元谋县| 潞城市| 绥宁县| 浮梁县| 尤溪县| 昔阳县| 苏尼特左旗| 沙田区| 阿克| 余江县| 太仆寺旗| 阿合奇县| 普兰县| 亚东县| 温泉县| 万盛区| 仪陇县| 凤庆县| 西安市| 甘孜县| 如东县| 普宁市| 潼关县| 环江| 阿鲁科尔沁旗| 吐鲁番市| 梧州市| 丹阳市| 惠安县| 镇宁| 襄樊市| 瑞昌市| 邮箱| 三明市| 岗巴县|