spring - 带有方法参数的 Spring AOP Aspect 建议
问题描述
我有如下方面的建议
@AfterReturning("execution(* de.ojk.platform.servicelayer.session.SessionService.getAttribute(..))")
public void fixUrl()
....
getAttribute 方法只接受一个字符串参数。
我想做什么,我希望“fixUrl”仅在“name”字符串作为参数给出时执行。“getAttribute('名称')”。我怎样才能做到这一点?谢谢!
解决方案
@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());
}
推荐阅读
- ethereum - 如何在 web3Provider 中调用合约方法并用它发送值?
- azure-web-app-service - 部署使用 Microsoft bot 框架构建的 bot
- reactjs - Visual Studio 代码 - 使用 Tailwind JIT CSS 在保存时编译
- python - 如何在 Keras 顺序模型中连接三层?
- node.js - 如何将来自 Axios 的响应分配给变量并稍后访问它
- java - JProfiler 能够为一个用户找到 JVM 进程,但可以在同一台机器上为另一个用户找到它
- google-cloud-platform - GCP 外部 HTTP(S) 负载均衡器返回 502:“backend_connection_closed_before_data_sent_to_client”
- android - 首次创建时无法构建 Bare Expo 应用程序(Expo SDK 42)
- python - Plotly (Python/Express):在图表和图例上设置最小宽度
- reactjs - ConnectyCube Messaging -web 中的连接未脱机