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

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.另外還有獲取被增強的方法相關(guān)信息 如String test.component.test1(String)這種

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

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

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

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

3..joinpoint.getSignature():(signature是信號,標識的意思):獲取被增強的方法相關(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()方法:該方法返回被織入增強處理的目標對象.(這個和getthis()方法很相似 但是的出來的值不相等)

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

輸出結(jié)果

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

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

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

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

提供訪問當前被通知方法的目標對象、代理對象、方法參數(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();       //返回目標對象
    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();         //連接點所在位置的相關(guān)信息
    String toShortString();     //連接點所在位置的簡短相關(guān)信息
    String toLongString();     //連接點所在位置的全部相關(guān)信息
}

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

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

相關(guān)文章

  • Java抽象類的概念講解

    Java抽象類的概念講解

    今天小編就為大家分享一篇關(guān)于Java抽象類的概念講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Java 反射機制知識詳細介紹及總結(jié)

    Java 反射機制知識詳細介紹及總結(jié)

    反射機制是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調(diào)用它的任意一個方法和屬性;這種動態(tài)獲取的信息以及動態(tài)調(diào)用對象的方法的功能稱為java語言的反射機制
    2017-01-01
  • Java并發(fā)編程預(yù)防死鎖過程詳解

    Java并發(fā)編程預(yù)防死鎖過程詳解

    這篇文章主要介紹了Java并發(fā)編程預(yù)防死鎖過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Java串口通信入門

    Java串口通信入門

    串口通信是一種用于在計算機和外部設(shè)備之間進行數(shù)據(jù)交換的通信方式,本文主要介紹了Java串口通信入門,并提供一個簡單的示例來演示如何在Java中進行串口通信,感興趣的可以了解一下
    2023-11-11
  • Java反射與Fastjson的危險反序列化詳解

    Java反射與Fastjson的危險反序列化詳解

    在?Java?中,Computer.class是一個引用,它表示了?Computer?的字節(jié)碼對象(Class對象),這個對象被廣泛應(yīng)用于反射、序列化等操作中,那么為什么?parseObject?需要這個引用呢,帶著這個問題我們一起通過本文學(xué)習(xí)下吧
    2024-07-07
  • 詳解JSON與?Java對象之間的轉(zhuǎn)化

    詳解JSON與?Java對象之間的轉(zhuǎn)化

    在現(xiàn)在的日常開發(fā)中,不管前端還是后端,JSON?格式的數(shù)據(jù)是用得比較多的,甚至可以說無處不在。所以本文主要來講講JSON?格式的數(shù)據(jù)與?Java?對象之間的轉(zhuǎn)化吧
    2023-03-03
  • Java基礎(chǔ)必學(xué)TreeSet集合

    Java基礎(chǔ)必學(xué)TreeSet集合

    這篇文章主要介紹了Java必學(xué)基礎(chǔ)TreeSet集合,TreeSet集合實現(xiàn)了SortedSet接口,?可以對集合中元素進行自然排序,?要求集合中的元素必須是可比較的。下文詳細介紹需要的朋友可以參考一下
    2022-04-04
  • mybatis的test坑及解決(不等于‘‘ 且 不等于0)

    mybatis的test坑及解決(不等于‘‘ 且 不等于0)

    這篇文章主要介紹了mybatis的test坑及解決(不等于‘‘ 且 不等于0),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java練手小項目實現(xiàn)一個項目管理系統(tǒng)

    Java練手小項目實現(xiàn)一個項目管理系統(tǒng)

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實現(xiàn)一個項目管理系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2021-10-10
  • 使用SpringBoot簡單實現(xiàn)一個蘋果支付的場景

    使用SpringBoot簡單實現(xiàn)一個蘋果支付的場景

    這篇文章主要為大家詳細介紹了如何在Spring?Boot項目中集成Apple?Pay功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11

最新評論

安宁市| 老河口市| 会东县| 彭州市| 华安县| 五莲县| 原平市| 榆树市| 思南县| 阿合奇县| 沂南县| 桦甸市| 深泽县| 乐亭县| 阿克苏市| 桦川县| 读书| 永胜县| 洪雅县| 酉阳| 庆城县| 咸阳市| 开远市| 都匀市| 天全县| 桂东县| 建始县| 托里县| 丰城市| 南皮县| 和政县| 红安县| 高雄县| 余庆县| 宣武区| 新郑市| 滦南县| 大连市| 新蔡县| 达日县| 进贤县|