我正在使用Spring AOP。这是示例方法:
public String method(List<Integer> ids) {
if(ids == null) return "ERROR";
else return "OK";
}
我的方面如下:
@AfterReturning(pointcut = "execution( * com.pack.MyService.method(..))", returning = "result")
public void methodAdvice(JoinPoint joinPoint, String result) {
// My implementation
}
是否可以根据method()
的retunt值调用或不调用aspect方法?提前致谢。
答案 0 :(得分:2)
您可以考虑抛出异常,而不是从函数返回错误值。如果你要抛出异常,你可能会考虑做这样的事情。
让我们再次重写你的功能。
public String method(List<Integer> ids) throws Exception {
if(ids == null)
throw new RunTimeException("ERROR");
return "OK";
}
现在您的方面看起来像这样。
@AfterThrowing(pointcut = "class() && execution( * com.pack.MyService.method(..))", throwing = "ex")
public void onMethodExecutionFailure(Exception ex) {
log.debug(ex.getMessage());
// Your implementation
}
@AfterReturning(pointcut = "execution( * com.pack.MyService.method(..))")
public void onMethodExecutionSuccess(String result) {
log.debug("Success!");
// Your success implementation
}
pointcut
和函数的参数只是例如。请根据需要修改它们。希望有所帮助。
答案 1 :(得分:0)
我认为你可以把你的“if / else逻辑”放在你的方法调用中,它可以从你的方法调用得到结果,如果结果是“ERROR”,只返回,或者做其他逻辑。