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

时间:2017-03-07 13:18:47

标签: java spring aop

我正在尝试实施Spring AOP @Before。 这是方法

    String underTest = "some publication, issue no. 3";

    String pattern = "(.*?), issue no. (\\d+)";
    Matcher matcher = Pattern.compile(pattern).matcher(underTest);

    boolean found = matcher.find();
    if (found) {
        log.info("something found");
        String group1 = matcher.group(1);
        log.info("group1: {}", group1);

        String group2 = matcher.group(2);
        log.info("group2: {}", group2);
    }

这是我想要实现的两件事

  1. 如果流量达到1点,那么它就会从那个点返回。它不应该再往前走,呼叫应该返回。
  2. 如果流程到达第2点,则恢复正常流程并调用内部方法。 现在发生的事情是在两种情况下都流动正常流量并继续调用内部方法。

1 个答案:

答案 0 :(得分:1)

如果要修改控制流,则需要@Around建议而不是@Before建议。

@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);
}