AspectJ - Сомнение - PullRequest
       5

AspectJ - Сомнение

0 голосов
/ 16 июня 2011

Аспект может быть использован для измерения производительности вызовов методов, как показано в примере ниже:

public aspect MonitorRequests {
  void around() : monitoredRequestO {
    PerfStats stats = getPerfStats(thisDoinPointStaticPart);
    long start = System-currentTimeMillisO;
    proceedO;
    stats.ecunter++;
    stats.time += System.currentTimeMillisC)-start;
  }
  pointcut monitoredRequestO :
    execution(void HttpServ1et.do*(..)) && if(enabled);
    // can expose stats via JMX, dump method, getstats etc.
  public static class PerfStats { _. }
  private Map<StaticPart,PerfStats> perfStatMap • //...
  private boolean enabled;
}

По умолчанию экземпляр аспекта связан с виртуальной машиной Java, а не с конкретные потоки выполнения, похожие на статический класс. Другой аспект ниже использует percflow(), чтобы связать экземпляр аспекта иначе, чем по умолчанию:

public aspect MonitorDatabaseRequests
  percflow(monitoredRequest() && !cflowbelow(mon-5toredRequest()) {
  void around() : monitoredRequestO {
    PerfStats stats = getPerfStats(thisJoinPointStaticPart);
    long time.= System.currentTimeMi 11 i s O ;
    proceed();
    stats.counter++;
    stats.databaseTime += accumulatedoatabaseTime;
    stats.time 4= System.currentTimeMi 11 isO-time;
  }
}

В чем отличие добавления объявления percflow () в этом примере

Я запутался, как percflow работает и чем он отличается от неиспользования ....

1 Ответ

0 голосов
/ 16 июня 2011

percflow - модель реализации аспекта.См. Здесь: http://eclipse.org/aspectj/doc/released/progguide/quick-aspectAssociations.html

Это означает, что один экземпляр этого аспекта создается для каждого введенного потока.

Первый аспект - это одиночный элемент, поэтому он должен хранить карту для всехстатистика производительности, которую он отслеживает.Второй аспект создается по мере необходимости, поэтому статистика производительности неявно сохраняется и связывается с надлежащим динамическим графом вызовов.

...