Spring 配置使用 - AOP 通知参数

本文详细介绍了Spring AOP中通知方法获取被通知方法参数的两种方式:自动获取和手动指定。通过JoinPoint、ProceedingJoinPoint和JoinPoint.StaticPart,我们可以自动获取连接点信息。同时,展示了如何在配置切面时手动指定参数。当混合使用时,自动获取的参数必须作为通知方法的第一个参数。
摘要由CSDN通过智能技术生成

基本概念

若想要在通知方法获取被通知方法的参数共有两种方式:自动获取、手动指定。下面来探究下这两种方式的不同之处。


自动获取参数

在介绍 AOP 的通知类型时有提到过环绕通知,该通知类型可以通过参数 ProceedingJoinPoint 自动获取被通知方法的参数值并调用该方法。除了 ProceedingJoinPoint 外,还有 JoinPoint,JoinPoint.StaticPart 也都能自动获取被通知方法的参数。


1.JoinPoint

JoinPoint 即连接点,通过该参数可以获取连接点(被通知方法)的相关信息。

首先来看该接口的继承关系,如下图。可以发现在环绕通知中所使用的 ProceedingJoinPoint 就是继承自该接口。

这里写图片描述

再来看看该接口的定义:

public interface JoinPoint {
   

    // 连接点的具体信息
    String toString();

    // 连接点的简单信息
    String toShortString();

    // 连接点的所有信息
    String toLongString();

    // AOP 代理对象
    Object getThis();

    // 目标对象   
    Object getTarget();

    // 被通知方法的参数列表
    Object[] getArgs();

    // 连接点签名  
    Signature getSignature();

    // 连接点方法所在类文件中的位置  
    SourceLocation getSourceLocation();

    // 连接点类型  
    String getKind();

   // 内部接口,暂不探究(下面会提到)
    public interface StaticPart {
   
        //... 省略部分代码
    }

    public interface EnclosingStaticPart extends StaticPart {
   }

    // 返回连接点静态部分 
    StaticPart getStaticPart();

    // getKind 方法的返回值
    static String METHOD_EXECUTION = "method-execution";
    static String METHOD_CALL = "method-call";
    static String CONSTRUCTOR_EXECUTION = "constructor-execution";
    static String CONSTRUCTOR_CALL = "constructor-call";
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oxf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值