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

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

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

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

概念:

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

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

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

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

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

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

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

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

3..joinpoint.getSignature():(signature是信號(hào),標(biāo)識(shí)的意思):獲取被增強(qiáng)的方法相關(guān)信息.其后續(xù)方法有兩個(gè)

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

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

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

輸出結(jié)果

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

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

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

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

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

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

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

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

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

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

相關(guān)文章

  • Java抽象類的概念講解

    Java抽象類的概念講解

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

    Java 反射機(jī)制知識(shí)詳細(xì)介紹及總結(jié)

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

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

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

    Java串口通信入門

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

    Java反射與Fastjson的危險(xiǎn)反序列化詳解

    在?Java?中,Computer.class是一個(gè)引用,它表示了?Computer?的字節(jié)碼對象(Class對象),這個(gè)對象被廣泛應(yīng)用于反射、序列化等操作中,那么為什么?parseObject?需要這個(gè)引用呢,帶著這個(gè)問題我們一起通過本文學(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集合實(shí)現(xiàn)了SortedSet接口,?可以對集合中元素進(jìn)行自然排序,?要求集合中的元素必須是可比較的。下文詳細(xì)介紹需要的朋友可以參考一下
    2022-04-04
  • mybatis的test坑及解決(不等于‘‘ 且 不等于0)

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

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

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

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

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

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

最新評論

临武县| 新民市| 石城县| 辽中县| 土默特右旗| 兴隆县| 龙岩市| 嘉黎县| 林芝县| 涟源市| 米易县| 梁山县| 高密市| 巴中市| 高青县| 孙吴县| 温宿县| 双柏县| 汤原县| 聂拉木县| 长寿区| 桃江县| 稻城县| 民县| 桃园市| 曲麻莱县| 华池县| 城口县| 大化| 渝北区| 武清区| 佳木斯市| 银川市| 外汇| 清镇市| 循化| 剑阁县| 哈密市| 隆回县| 呼伦贝尔市| 鹿邑县|