Использование &&
подразумевает, что вы ожидаете, что оба метода будут выполняться одновременно. Но, конечно, это не так. Либо первое, либо второе совпадают, они являются двумя разными точками соединения, поэтому комбинирование точек с &&
никогда не вызовет срабатывания вашего метода совета. Вам нужно использовать ||
вместо того, чтобы соответствовать любому.
Глядя на свой исходный код, вы, вероятно, захотите вызвать совет, когда boo
вызывается изнутри foo
и, возможно, также наоборот. Вы также пытаетесь стереть контекст из вызывающего метода в вызываемый метод. Это называется червоточина , см. Также мои ответы здесь:
Так что, вероятно, вы хотите использовать pointcut, как
execute2(secAnn) && cflow(execute(firstAnn))
для вашего примера или наоборот, если у вас есть случаи, когда второй метод вызывает первый:
cflow(execute2(secAnn)) && execute(firstAnn)