Несколько выражений выполнения внутри выражения pointcut, но работает только один - PullRequest
1 голос
/ 12 января 2012

Я пытаюсь рассчитать время выполнения кода в пакете "com.company.somemodule" (имеет класс R1, R2, ..), а также код в подпакетах,

  • com.company.somemodule.subPackageA (имеет классы A1, A2, ..)
  • com.company.somemodule.subPackageB

Я написал pointcut, подобный следующему.Я могу просмотреть время выполнения для классов A1, A2, но я не могу просмотреть время выполнения для классов R1, R2 и т. Д.

<bean id="timingAdvice"
      class="org.springframework.aop.interceptor.PerformanceMonitorInterceptor" />
<aop:config>
    <aop:advisor
    pointcut="execution(* com.company.somemodule..*.*(..)) OR 
              execution(* com.company.somemodule.*.*(..))"
    advice-ref="timingAdvice" />
</aop:config>

Пожалуйста, кто-нибудь может помочь?Заранее спасибо.

PS: Я уже пробовал следовать предложениям, размещенным здесь .

Ответы [ 2 ]

1 голос
/ 23 апреля 2015

Чтобы построить ответ KC ...

У меня была похожая проблема при настройке Spring PerformanceMonitorInterceptor.Вот пример рабочей конфигурации, которую я использовал для мониторинга выполнения метода в нескольких пакетах:

<bean id="performanceMonitor"
  class="org.springframework.aop.interceptor.PerformanceMonitorInterceptor" />

<aop:config>
  <aop:pointcut id="allCoreMethods" expression="
      (
           within( org.somepackage.dao..* ) 
        or within( org.somepackage.controller..* )
        or within( org.somepackage.service..* )
        or within( org.somepackage.webservices..* )
      ) 
      AND execution(* *(..))"
  />
  <aop:advisor pointcut-ref="allCoreMethods" advice-ref="performanceMonitor" order="2"/>
</aop:config>
1 голос
/ 02 марта 2012

Я не вижу ошибок в вашем pointcut с первого взгляда, но я думаю, что вам нужно сделать проще, используя комбинацию выражения "inside" pointcut и выражения "execute".примерно так:

pointcut="within(com.company.somemodule..*) AND 
              execution(* *(..))"

Это точка для выполнения методов для всех методов в пакете com.company.somemodule.

...