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

淺談springboot之JoinPoint的getSignature方法

 更新時間:2021年06月18日 09:06:58   作者:Mint6  
這篇文章主要介紹了springboot之JoinPoint的getSignature方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

JoinPoint的getSignature方法

在使用springboot寫aop的時候,有個JoinPoint類,用來獲取代理類和被代理類的信息。

這個文章記錄一下JoinPoint的getSignature方法返回的是什么格式。

不廢話,貼代碼

package org.aspectj.lang; 
public interface Signature {
    String toString(); 
    String toShortString(); 
    String toLongString(); 
    String getName(); 
    int getModifiers(); 
    Class getDeclaringType(); 
    String getDeclaringTypeName();
}

打印輸出,getString是測試類的方法名,TestController是類名

joinPoint.getSignature().toString():String com.fast.web.controller.TestController.getString()
joinPoint.getSignature().toShortString():TestController.getString()
joinPoint.getSignature().toLongString():public java.lang.String com.fast.web.controller.TestController.getString()
joinPoint.getSignature().getName():getString
joinPoint.getSignature().getModifiers():1
joinPoint.getSignature().getDeclaringType():class com.fast.web.controller.TestController
joinPoint.getSignature().getDeclaringTypeName():com.fast.web.controller.TestController

冒號前面是使用的方法,后面是本次測試輸出的結果。

附上被測試的類:

package com.fast.web.controller;
import com.fast.framework.dao.TestDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; 
@RestController
public class TestController {
 
    @Autowired
    private TestDao testDao;
 
    @RequestMapping("/test")
    public String getString() {
        int i = testDao.selectBase();
        return String.valueOf(i);
    }
}

springboot注解式AOP通過JoinPoint獲取參數(shù)

之前開發(fā)時,需要獲取切點注解的參數(shù)值,記錄一下

切面注解 :

@Aspect – 標識為一個切面供容器讀取,作用于類

@Pointcut – (切入點):就是帶有通知的連接點

@Before – 前置

@AfterThrowing – 異常拋出

@After – 后置

@AfterReturning – 后置增強,執(zhí)行順序在@After之后

@Around – 環(huán)繞

1.相關maven包

 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-aop</artifactId>
 </dependency>

2.自定義一個接口

import java.lang.annotation.*;
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Action {
    String value() default "list";
}

3.定義切面類

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@Aspect
@Component
public class ActAspect {
 
 @AfterReturning("@annotation(包名.Action)")
    public void afterReturning(JoinPoint point){
    
  // 獲取切入點方法名
  String methodName = point.getSignature().getName();
  
     // 獲取注解中的參數(shù)值
        MethodSignature methodSignature = (MethodSignature)point.getSignature();
        Method method = methodSignature.getMethod();
        // 獲取注解Action 
        Action annotation = method.getAnnotation(Action.class);
        // 獲取注解Action的value參數(shù)的值
        String value = annotation.value();
        
        // 獲取切點方法入?yún)⒘斜?
        Object[] objArray = point.getArgs();
        // 下面代碼根據(jù)具體入?yún)㈩愋瓦M行修改
        List<String> list = new ArrayList<>();
        for (Object obj: objArray) {
            if(obj instanceof Collection){
                list = (List<String>) obj;
            }
        }
    }    
}

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

相關文章

  • java高并發(fā)ScheduledThreadPoolExecutor類深度解析

    java高并發(fā)ScheduledThreadPoolExecutor類深度解析

    這篇文章主要為大家介紹了java高并發(fā)ScheduledThreadPoolExecutor類源碼深度解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Java信號量Semaphore原理及代碼實例

    Java信號量Semaphore原理及代碼實例

    這篇文章主要介紹了Java信號量Semaphore原理及代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • Java使用觀察者模式實現(xiàn)氣象局高溫預警功能示例

    Java使用觀察者模式實現(xiàn)氣象局高溫預警功能示例

    這篇文章主要介紹了Java使用觀察者模式實現(xiàn)氣象局高溫預警功能,結合完整實例形式分析了java觀察者模式實現(xiàn)氣象局高溫預警的相關接口定義、使用、功能操作技巧,并總結了其設計原則與適用場合,具有一定參考借鑒價值,需要的朋友可以參考下
    2018-04-04
  • Java線程實現(xiàn)的三種方式詳細解析

    Java線程實現(xiàn)的三種方式詳細解析

    這篇文章主要介紹了Java線程實現(xiàn)的三種方式詳細解析,Java多線程實現(xiàn)方式主要有三種,繼承Thread類、實現(xiàn)Runnable接口、使用ExecutorService、Callable、Future實現(xiàn)有返回結果的多線程,需要的朋友可以參考下
    2023-12-12
  • SpringBoot整合MongoDB實現(xiàn)文件上傳下載刪除

    SpringBoot整合MongoDB實現(xiàn)文件上傳下載刪除

    這篇文章主要介紹了SpringBoot整合MongoDB實現(xiàn)文件上傳下載刪除的方法,幫助大家更好的理解和學習使用SpringBoot框架,感興趣的朋友可以了解下
    2021-05-05
  • 必須要學會的JMM與volatile

    必須要學會的JMM與volatile

    這篇文章主要介紹了必須要學會的JMM與volatile,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • SpringBoot結合JWT實現(xiàn)用戶登錄、注冊、鑒權

    SpringBoot結合JWT實現(xiàn)用戶登錄、注冊、鑒權

    用戶登錄、注冊及鑒權是我們基本所有系統(tǒng)必備的,也是很核心重要的一塊,本文主要介紹了SpringBoot結合JWT實現(xiàn)用戶登錄、注冊、鑒權,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-05-05
  • Spring boot + mybatis + Vue.js + ElementUI 實現(xiàn)數(shù)據(jù)的增刪改查實例代碼(二)

    Spring boot + mybatis + Vue.js 

    這篇文章主要介紹了Spring boot + mybatis + Vue.js + ElementUI 實現(xiàn)數(shù)據(jù)的增刪改查實例代碼(二),非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-05-05
  • SpringBoot自定義Starter與自動配置實現(xiàn)方法詳解

    SpringBoot自定義Starter與自動配置實現(xiàn)方法詳解

    在Spring Boot官網(wǎng)為了簡化我們的開發(fā),已經(jīng)提供了非常多場景的Starter來為我們使用,即便如此,也無法全面的滿足我們實際工作中的開發(fā)場景,這時我們就需要自定義實現(xiàn)定制化的Starter
    2023-02-02
  • 詳解如何獨立使用ribbon實現(xiàn)業(yè)務客戶端負載均衡

    詳解如何獨立使用ribbon實現(xiàn)業(yè)務客戶端負載均衡

    這篇文章主要為大家介紹了詳解如何獨立使用ribbon實現(xiàn)業(yè)務客戶端負載均衡,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06

最新評論

南皮县| 郯城县| 金湖县| 乐都县| 札达县| 扎兰屯市| 枣阳市| 德清县| 广昌县| 九龙坡区| 江达县| 石楼县| 报价| 弥渡县| 伊吾县| 新安县| 布拖县| 泸西县| 东辽县| 科尔| 怀远县| 张家口市| 崇阳县| 略阳县| 宾川县| 长宁县| 即墨市| 上饶市| 阿合奇县| 安义县| 祁连县| 宾川县| 鹿邑县| 即墨市| 沁水县| 大英县| 将乐县| 新绛县| 黔江区| 兴国县| 玉田县|