亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

springAOP中用joinpoint獲取切入點方法的參數(shù)操作

 更新時間:2021年06月17日 09:28:16   作者:java入門到無敵  
這篇文章主要介紹了springAOP中用joinpoint獲取切入點方法的參數(shù)操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

springAOP joinpoint獲取切入點方法的參數(shù)

概念:

訪問目標方法即用jointpoint(@around用poceedingjointpoint)

1.獲取他們的目標對象信息, 如test.component@80387a這種

2.還有獲取帶參方法的參數(shù), 如[Ljava.lang.Object;@183cfe9(想當然我們也可以用對象的arrays.toString()方法將其還原)

3.另外還有獲取被增強的方法相關信息 如String test.component.test1(String)這種

總結:訪問目標方法參數(shù), 有三種方法(實際有四種,先說三種)

joinpoint.getargs():獲取帶參方法的參數(shù)

注:就是獲取組件中test方法中的參數(shù),如果test方法中有多個參數(shù),那么這個方法機會返回多個參數(shù).想要哪個就通過for循環(huán)加上判斷來篩選

2.joinpoint.getTarget():獲取他們的目標對象信息

3..joinpoint.getSignature():(signature是信號,標識的意思):獲取被增強的方法相關信息.其后續(xù)方法有兩個

getDeclaringTypeName:返回方法所在的包名和類名

getname():返回方法名

看不懂,請看代碼!

組件類

@Component
public class component {
    public void test() {
    }
    public void test1(String name2) {
    }
}

我以@afterreturning為例解說

我們先看3 Signature方法

@AfterReturning(value="execution(* test.*.*(..))",returning="name2")
    private void test1(JoinPoint jp ,String name2) {
                       System.out.println(jp.getSignature());
                       System.out.println(jp.getSignature().getName());
                System.out.println(jp.getSignature().getDeclaringTypeName());
}

Signature方法下的輸出結果

你看,

getSignature());是獲取到這樣的信息 : 修飾符+ 包名+組件名(類名) +方法名

getSignature().getName()); :方法名

getSignature().getDeclaringTypeName()): 包名+組件名(類名)

我們再看1 getargs()

System.out.println(jp.getArgs());
System.out.println(Arrays.toString(jp.getArgs()));

結果輸出

jp.getArgs():我們會得到一個 看不懂一組數(shù)組對象,但是我們知道這是一個對象,參數(shù)對象 Arrays.toString(jp.getArgs()) 但是我們可以用Arrays類中數(shù)組轉字符串方法:arrays.tostring(返回指定數(shù)組內容以字符串表示出來) 就可以得到具體數(shù)字了

3.getTarget()方法:該方法返回被織入增強處理的目標對象.(這個和getthis()方法很相似 但是的出來的值不相等)

System.out.println(jp.getTarget());

輸出結果

是一個實實在在的對象,既不是參數(shù)也不是相關信息

總結:以上就是訪問目標方法的參數(shù)的所有方法(除了getthis()沒有說其實也是返回一個對象生成的代理對象

得出的對象與gettarget()方法很相似幾乎可以說是一模一樣的,但是我用過.eqauls和==都不相等)這些方法,讓我想起了 document(dom)編程的獲取元素docuemnt.getelementbyid(); 獲取這些元素可以進行修改或者觀察自己代碼是否有異樣。

使用JoinPoint獲取被通知方法參數(shù)并傳遞給通知方法

提供訪問當前被通知方法的目標對象、代理對象、方法參數(shù)等數(shù)據

package org.aspectj.lang;
import org.aspectj.lang.reflect.SourceLocation;
public interface JoinPoint {
    String toString();         //連接點所在位置的相關信息
    String toShortString();     //連接點所在位置的簡短相關信息
    String toLongString();     //連接點所在位置的全部相關信息
    Object getThis();         //返回AOP代理對象
    Object getTarget();       //返回目標對象
    Object[] getArgs();       //返回被通知方法參數(shù)列表
    Signature getSignature();  //返回當前連接點簽名
    SourceLocation getSourceLocation();//返回連接點方法所在類文件中的位置
    String getKind();        //連接點類型
    StaticPart getStaticPart(); //返回連接點靜態(tài)部分
}

用于環(huán)繞通知,使用proceed()方法來執(zhí)行目標方法

public interface ProceedingJoinPoint extends JoinPoint {
    public Object proceed() throws Throwable;
    public Object proceed(Object[] args) throws Throwable;
}

訪問連接點的靜態(tài)部分,如被通知方法簽名、連接點類型等

public interface StaticPart {
Signature getSignature();    //返回當前連接點簽名
String getKind();          //連接點類型
    int getId();               //唯一標識
String toString();         //連接點所在位置的相關信息
    String toShortString();     //連接點所在位置的簡短相關信息
    String toLongString();     //連接點所在位置的全部相關信息
}

特別說明:JoinPoint 必須是第一個參數(shù)

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

相關文章

  • Java之Springcloud Feign組件詳解

    Java之Springcloud Feign組件詳解

    這篇文章主要介紹了Java之Springcloud Feign組件詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • java 字符串分割的三種方法(總結)

    java 字符串分割的三種方法(總結)

    下面小編就為大家?guī)硪黄猨ava 字符串分割的三種方法(總結)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • Java編程讀寫鎖詳解

    Java編程讀寫鎖詳解

    本篇文章給大家詳細分享了Java編程讀寫鎖的相關原理以及知識點內容,有興趣的朋友們可以參考下。
    2018-08-08
  • SpringSecurity數(shù)據庫進行認證和授權的使用

    SpringSecurity數(shù)據庫進行認證和授權的使用

    本文主要介紹了用戶的賬號、密碼以及角色信息在數(shù)據庫中的認證和授權,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 23種設計模式(20)java中介者模式

    23種設計模式(20)java中介者模式

    這篇文章主要為大家詳細介紹了23種設計模式之java中介者模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Java Lambda表達式和函數(shù)式接口實例分析

    Java Lambda表達式和函數(shù)式接口實例分析

    這篇文章主要介紹了Java Lambda表達式和函數(shù)式接口,結合實例形式分析了Java8 Lambda表達式和函數(shù)式接口相關原理、用法及操作注意事項,需要的朋友可以參考下
    2019-09-09
  • java實現(xiàn)簡易計算器功能

    java實現(xiàn)簡易計算器功能

    這篇文章主要為大家詳細介紹了java實現(xiàn)簡易計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • @SpringBootApplication注解的使用

    @SpringBootApplication注解的使用

    這篇文章主要介紹了@SpringBootApplication注解的使用,幫助大家更好的理解和學習使用springboot框架,感興趣的朋友可以了解下
    2021-04-04
  • Java 文件傳輸助手的實現(xiàn)(單機版)

    Java 文件傳輸助手的實現(xiàn)(單機版)

    這篇文章主要介紹了Java 文件傳輸助手的實現(xiàn)(單機版),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • Java 字符串轉float運算 float轉字符串的方法

    Java 字符串轉float運算 float轉字符串的方法

    今天小編就為大家分享一篇Java 字符串轉float運算 float轉字符串的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07

最新評論