首页 > 解决方案 > 带有方法参数的 Spring AOP Aspect 建议

问题描述

我有如下方面的建议

@AfterReturning("execution(* de.ojk.platform.servicelayer.session.SessionService.getAttribute(..))")
public void fixUrl()
....

getAttribute 方法只接受一个字符串参数。

我想做什么,我希望“fixUrl”仅在“name”字符串作为参数给出时执行。“getAttribute('名称')”。我怎样才能做到这一点?谢谢!

标签: springspring-mvcaopaspectjspring-aop

解决方案


@AfterReturning(value = "execution(* de.ojk.platform.servicelayer.session.SessionService.getAttribute(..)) && args(String)")
public void after1(JoinPoint jp){
    System.out.println(jp.getArgs()[0]);
    System.out.println("after Return:"+jp.getSignature());
}

以上方式可以工作。如果您想支持除 String 之外的其他类型,请将 String 更改为您想要的。jp.getArgs()[0] 获取变量!您可以尝试以下方式,我在我的代码中成功尝试!

 @AfterReturning(value = "execution(@AfterReturning(value = "execution(* de.ojk.platform.servicelayer.session.SessionService.getAttribute(..)) && args(a)")
public void after2(JoinPoint jp,String a){
    System.out.println(a);
    System.out.println("after Return:"+jp.getSignature());
}

推荐阅读