2015-08-03 3 views
0

У меня возникли проблемы с выражением aspect aspectJ. Я хотел бы воспользоваться моим советом, когда какой-либо из методов «QueryUtil» вызывается из класса «Отчет».Aspectj pointcut выражение

Например: если мы вызываем QueryUtil. *() Внутри отчета. *() -> Выполняется совет. Если мы вызываем QueryUtil. *() Из AnyOtherClass. * -> Совет не выполняется.

Я думал о выражении cflow, но до сих пор не нашел способ его написать. Я думал о чем-то вроде этого:

<pointcut name="scope" 
    expression="(cflow(call(* ext.demo.Report.\*(..))) && execution(* ext.demo.QueryUtil.*(..)))"/> 

Может ли кто-нибудь помочь мне в этом?

ответ

1

Единственная странная вещь в вашем pointcut - это мошенник «Я вижу впереди * в компоненте pointflow cflow. Я также предлагаю использовать execute(), если вы предпочитаете call() (обычно на сайтах обычно используется множество сайтов, но только один сайт исполнения).

cflow(execution(* ext.demo.Report.*(..))) && execution(* ext.demo.QueryUtil.*(..)) 

Если он не ведет себя за вас, то сломайте его, чтобы решить, какая часть виновата. execution(* ext.demo.QueryUtil.*(..)) соответствует всем, что вы ожидаете? execution(* ext.demo.Report.*(..)) соответствует всему, что вы ожидаете? (Я бы использовал -showWeaveInfo для проверки)

+0

Извините, «странная вещь» была моей ошибкой при написании вопроса. Не знаю, почему я хотел бежать * .. Большое спасибо за решение моей проблемы! Он отлично работает. – Gazeciarz