spring AOP 之 获取 被切函数参数 被切函数返回值 以及 修改被切函数返回值

1、定义 环绕类型的AOP配置文件 


 <!--该类配置为环绕配置 可以获取 被切面函数参数 被切面函数返回值 以及可以改变 被切面函数的返回值-->
    <bean id="testAroundAop" class="com.intcache.god.rpcAop.TestAop"></bean>
    <aop:config>
        <!-- 定义切点 -->
        <aop:pointcut id="aroundPointcutTarget"
                      expression="execution(* com.intcache.god.controllers.DevController.doAddDevice(..))"/>
        <!-- 定义切面 -->
        <aop:aspect id="userAspect" ref="testAroundAop">
            <!--通知函数 method 的参数为 ProceedingJoinPoint 类型 该类型为 JoinPoint 的子类 可以通过该对象获取 被切面参数 以及 返回值-->
            <aop:around method="aroundMethod" pointcut-ref="aroundPointcutTarget"/>
        </aop:aspect>
    </aop:config>


2、定义 通知bean


package com.intcache.god.rpcAop;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;


/**
 * Created by CachePro on 2016/7/14.
 */
public class TestAop {


    /**
     * 环绕通知 【即 被切函数执行前后执行该函数】
     * @param pjp
     * @return
     * @throws Throwable
     */
    public Object aroundMethod(ProceedingJoinPoint pjp) throws Throwable {
        Object[] args = pjp.getArgs(); // 获取被切函数 参数
        Object object = pjp.proceed(); //获取被切函数的 返回值
        Map<String, Object> resultMap = new HashMap<String, Object>();
        resultMap.put("result", "-4");
        object = resultMap; //修改被切函数的返回值
        HttpServletRequest request = (HttpServletRequest) args[0];
        System.out.println(request.getParameter("name"));
        System.out.println("Log.......");
        return object;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值