Java 如何在验证方法失败之前从AOP返回

Java 如何在验证方法失败之前从AOP返回,java,spring,aop,Java,Spring,Aop,我之前正在尝试实现SpringAOP@。 这里是方法 @Before("execution(* com.dummy.pkg..*.*(..))") public Response<Object> beforeServiceAspect(JoinPoint joinPoint) throws Exception { Object[] signatureArgs = joinPoint.getArgs(); String ses

我之前正在尝试实现SpringAOP@。 这里是方法

 @Before("execution(* com.dummy.pkg..*.*(..))")
    public Response<Object> beforeServiceAspect(JoinPoint joinPoint) throws Exception {

            Object[] signatureArgs = joinPoint.getArgs();

           String sessionId=(String) signatureArgs[0];


         if(null==sessionId||sessionId.isEmpty()||!loginService.getUserInfo(sessionId))
           {
                Response.setStatusCode("401");
                Response.setC
                Response.setResultString("Unauthorized User");
                  return  Response;    
 //this is where i  want to  return in case of program enter here   
//**point 1** 
           }
   //**point 2**  where execution reaches then resume normal flow 
return "";
}
@之前(“执行(*com.dummy.pkg..*(..))
公共响应beforeServiceAspect(JoinPoint JoinPoint)引发异常{
对象[]signatureArgs=joinPoint.getArgs();
String sessionId=(String)signatureArgs[0];
if(null==sessionId | | sessionId.isEmpty()| |!loginService.getUserInfo(sessionId))
{
响应。设置状态代码(“401”);
Response.setC
Response.setResultString(“未授权用户”);
返回响应;
//这是我想要返回的地方,以防程序在这里输入
//**第1点**
}
//**第2点**执行达到该点,然后恢复正常流程
返回“”;
}
我有两件事要做

  • 若流到达点1,那个么它将从该点本身返回。它不应该走得更远,调用应该返回
  • 若流到达点2,它将恢复正常流并调用内部方法。 现在发生的事情是,在这两种情况下,它都在正常流动,并继续调用内部方法

  • 如果要修改控制流,则需要一个
    @左右的
    建议,而不是
    之前的
    @建议

    @Around("execution(* com.dummy.pkg..*.*(..))")
    public Response<Object> beforeServiceAspect(ProceedingJoinPoint joinPoint) throws Exception {
    
            Object[] signatureArgs = joinPoint.getArgs();
    
           String sessionId=(String) signatureArgs[0];
    
    
         if(null==sessionId || sessionId.isEmpty() || !loginService.getUserInfo(sessionId))
           {
                Response.setStatusCode("401");
                Response.setResultString("Unauthorized User");
                return  Response;    
           }
        return joinPoint.proceed(args);
    }
    
    @Around(“execution(*com.dummy.pkg..*(..)”)
    公共响应beforeServiceAspect(ProceedingJoinPoint joinPoint)引发异常{
    对象[]signatureArgs=joinPoint.getArgs();
    String sessionId=(String)signatureArgs[0];
    if(null==sessionId | | sessionId.isEmpty()| |!loginService.getUserInfo(sessionId))
    {
    响应。设置状态代码(“401”);
    Response.setResultString(“未授权用户”);
    返回响应;
    }
    返回连接点。继续(args);
    }