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

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

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

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

概念:

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

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

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

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

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

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

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

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

3..joinpoint.getSignature():(signature是信號,標(biāo)識的意思):獲取被增強的方法相關(guān)信息.其后續(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方法下的輸出結(jié)果

你看,

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

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

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

我們再看1 getargs()

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

結(jié)果輸出

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

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

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

輸出結(jié)果

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

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

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

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

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

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

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

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

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

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

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

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

相關(guān)文章

  • Java之Springcloud Feign組件詳解

    Java之Springcloud Feign組件詳解

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

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

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

    Java編程讀寫鎖詳解

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

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

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

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

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

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

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

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

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

    @SpringBootApplication注解的使用

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

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

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

    Java 字符串轉(zhuǎn)float運算 float轉(zhuǎn)字符串的方法

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

最新評論