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

淺談springboot之JoinPoint的getSignature方法

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

JoinPoint的getSignature方法

在使用springboot寫(xiě)aop的時(shí)候,有個(gè)JoinPoint類(lèi),用來(lái)獲取代理類(lèi)和被代理類(lèi)的信息。

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

不廢話(huà),貼代碼

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

打印輸出,getString是測(cè)試類(lèi)的方法名,TestController是類(lèi)名

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

冒號(hào)前面是使用的方法,后面是本次測(cè)試輸出的結(jié)果。

附上被測(cè)試的類(lèi):

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通過(guò)JoinPoint獲取參數(shù)

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

切面注解 :

@Aspect – 標(biāo)識(shí)為一個(gè)切面供容器讀取,作用于類(lèi)

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

@Before – 前置

@AfterThrowing – 異常拋出

@After – 后置

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

@Around – 環(huán)繞

1.相關(guān)maven包

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

2.自定義一個(gè)接口

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

3.定義切面類(lèi)

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){
    
  // 獲取切入點(diǎn)方法名
  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();
        
        // 獲取切點(diǎn)方法入?yún)⒘斜?
        Object[] objArray = point.getArgs();
        // 下面代碼根據(jù)具體入?yún)㈩?lèi)型進(jìn)行修改
        List<String> list = new ArrayList<>();
        for (Object obj: objArray) {
            if(obj instanceof Collection){
                list = (List<String>) obj;
            }
        }
    }    
}

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

相關(guān)文章

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

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

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

    Java信號(hào)量Semaphore原理及代碼實(shí)例

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

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

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

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

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

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

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

    必須要學(xué)會(huì)的JMM與volatile

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

    SpringBoot結(jié)合JWT實(shí)現(xiàn)用戶(hù)登錄、注冊(cè)、鑒權(quán)

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

    Spring boot + mybatis + Vue.js 

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

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

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

    詳解如何獨(dú)立使用ribbon實(shí)現(xiàn)業(yè)務(wù)客戶(hù)端負(fù)載均衡

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

最新評(píng)論

乌拉特中旗| 新绛县| 尼勒克县| 廉江市| 牟定县| 盘山县| 井陉县| 闵行区| 平塘县| 慈利县| 泰兴市| 泰宁县| 东城区| 会东县| 柘荣县| 博野县| 三原县| 南城县| 博客| 重庆市| 井冈山市| 司法| 邵东县| 兴化市| 佛坪县| 连城县| 景宁| 类乌齐县| 南康市| 岳池县| 普兰店市| 双峰县| 基隆市| 鲁山县| 南和县| 萍乡市| 桂阳县| 江都市| 尼玛县| 天气| 尚志市|