2015-09-04 1 views
0

У меня есть метод @Before, который возвращает некоторый токен, который я хочу использовать внутри pointcut.AspectJ есть способ получить возвращаемое значение из Before и использовать его внутри pointcut?

@Pointcut("execution(getData())") 
    private void selectAll(){} 

@Before("selectAll()") 
public void beforeAdvice(ProceedingJoinPoint joinPoint) throws Throwable{ 
    //Return the token 
} 
public void getData(){ 
    //Is there a way I can use the token returned by before?? 
} 
@After("selectAll()") 
public void afterAdvice(ProceedingJoinPoint joinPoint) throws Throwable{ 
    //destroy the token 
} 

Есть ли способ, которым я могу использовать токен, возвращенный ранее внутри getData()?

ответ

1

Нет, вы не можете, потому что вы хотите сделать, не имеет никакого логического смысла:

  • Как следует из названия, @Before совет работает до того выполняется целевой метод.
  • Но прежде чем метод будет выполнен, возвращаемое значение не может быть возвращено, только после его выполнения.
  • Таким образом, вы можете обращаться только с возвратным значением в совете @After или @Around, а в последнем случае вы получите его в результате proceed().
  • Ваш код подразумевает, что вы хотите «использовать маркер, возвращенный ранее». Но совет @Before имеет возвращаемый тип void, т. Е. Он ничего не возвращает. Итак, что вы хотите использовать?

Пожалуйста, дайте мне знать, если вам нужен образец кода.

Смежные вопросы