91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Aop 怎么獲取參數名參數值

發布時間:2021-07-21 10:21:16 來源:億速云 閱讀:291 作者:chen 欄目:開發技術

本篇內容主要講解“Spring Aop 怎么獲取參數名參數值”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Spring Aop 怎么獲取參數名參數值”吧!

前言:

有時候我們在用Spring Aop面向切面編程,需要獲取連接點(JoinPoint)方法參數名、參數值。

環境:

  • Mac OSX

  • Intellij IDEA

  • Spring Boot 2x

  • Jdk 1.8x

Code:

package com.example.aopdemo.aop; 
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.CodeSignature;
import org.springframework.stereotype.Component;
 
import java.util.HashMap;
import java.util.Map;
 
/**
 * DemoAop
 * Create by Gray(Ganguocai@outlook.com)
 */
@Aspect
@Component
@Slf4j
public class DemoAop {
 
    /**
     * 環繞通知
     * @param proceedingJoinPoint
     * @return
     * @throws Throwable
     */
    @Around(value = "execution(* com.example.aopdemo..*(..)))")
    public Object demoAop(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
        
        log.debug("執行前:");
        
        Map<String, Object> params = getNameAndValue(proceedingJoinPoint);
        for (Map.Entry<String, Object> entry : params.entrySet()) {
            System.out.println("name: " + entry.getKey() + " value: " + entry.getValue());
        }
        
        Object object = proceedingJoinPoint.proceed();  //執行連接點方法,object:方法返回值
        
        log.debug("執行后:");
        
        return object;
    }
    /**
     * 獲取參數Map集合
     * @param joinPoint
     * @return
     */
    Map<String, Object> getNameAndValue(ProceedingJoinPoint joinPoint) {
        Map<String, Object> param = new HashMap<>();
        Object[] paramValues = joinPoint.getArgs();
        String[] paramNames = ((CodeSignature)joinPoint.getSignature()).getParameterNames();
        for (int i = 0; i < paramNames.length; i++) {
            param.put(paramNames[i], paramValues[i]);
        }
        return param;
    }
}

AOP切面獲取參數的一個小技巧

一般來說,我們的參數,都是通過json傳遞的,那么這個問題就轉化成了,從json中獲取指定字符串的問題。

OK,這個問題就簡單了。

如下:

public static void main(String[] args) {
    // 這里JSONObject是fastjson-1.2.41.jar包下的
    JSONObject jsonObject = JSON.parseObject("{\"timeStamp\":21602756894612,\"status\":0,\"results\":{\"userName\":\"yang20102\",\"userLevel\":\"3\"},\"errorCode\":null,\"errorMessage\":null}");
    // 獲取json最外層字符串
    Object timeStamp = jsonObject.get("timeStamp");
    System.out.println("timeStamp:" + timeStamp);
 
    // 獲取復雜對象
    Object results = jsonObject.get("results");
    JSONObject jsonObjectResults = JSON.parseObject(results.toString());
    Object userName = jsonObjectResults.get("userName");
    System.out.println("userName:" + userName);
}

實例json如下:

{
  "timeStamp": 21602756894612,
  "status": 0,
  "results": {
    "userName": "yang20102",
    "userLevel": "3"
  },
  "errorCode": null,
  "errorMessage": null
}

到此,相信大家對“Spring Aop 怎么獲取參數名參數值”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

望谟县| 三亚市| 贵州省| 龙井市| 松溪县| 六安市| 土默特左旗| 闸北区| 松阳县| 双江| 饶平县| 大石桥市| 西安市| 集贤县| 大渡口区| 蒙城县| 和平县| 都安| 娄底市| 同心县| 西丰县| 上杭县| 龙川县| 天峨县| 乐至县| 徐闻县| 陕西省| 丹凤县| 大渡口区| 九龙城区| 武山县| 中山市| 诸暨市| 宁波市| 延川县| 新郑市| 额尔古纳市| 尼勒克县| 荣昌县| 泽州县| 宾川县|