когда @Around используется для Spring AOP, данные не извлекаются - PullRequest
0 голосов
/ 06 мая 2020

Я Spring AOP, и у меня есть @Around, как показано ниже

@Around(value = "execution(* com.spring.rest.controller.Controller.*(..))")
public void around(ProceedingJoinPoint joinPoint) throws Throwable {
    long start = System.currentTimeMillis();
    joinPoint.proceed();
    long taken = System.currentTimeMillis() - start;
    logger.info("around this {} time taken is {}", joinPoint, taken);
} 

В моем контроллере Rest у меня есть getmapping, и когда я вызываю эту маршрутизацию в браузере , данные не извлекаются .

Из журналов я обнаружил, что он возвращал null (ниже информации журнала) - выполняется @Around, и это заняло 20 секунд, @AfterReturning выполняется с возвращением null

2020-05-07 00:41:03.083  INFO 366372 --- [nio-8080-exec-1] lication$$EnhancerBySpringCGLIB$$21c1be2 : around this execution(List com.spring.rest.controller.Controller.getm()) time taken is 20
2020-05-07 00:41:03.084  INFO 366372 --- [nio-8080-exec-1] lication$$EnhancerBySpringCGLIB$$21c1be2 : returning execution(List com.spring.rest.controller.Controller.getm()) returned with value null

но когда я удаляю @Around, API работает отлично.

могу ли я узнать, в чем может быть причина и как решить эту проблему?

1 Ответ

2 голосов
/ 06 мая 2020

Необходимо вернуть объект.

public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
    long start = System.currentTimeMillis();
    Object object = joinPoint.proceed();
    long taken = System.currentTimeMillis() - start;
    logger.info("around this {} time taken is {}", joinPoint, taken);
    return object;
} 
...