Помогите с pointcut - AspectJ - PullRequest
       26

Помогите с pointcut - AspectJ

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

Я просто немного запутался с параметрами в pointcut, был бы признателен, если бы кто-нибудь мог мне это объяснить ...

import Java.util.logging.*;
import org.aspect j.lang.*;

public aspect TraceAspect {
private Logger _logger = Logger.getLogger("trace");

TraceAspectV2() {
      _logger.setLevel(Level.ALL);
}

pointcut traceMethods()
(execution(* Account.*(..)) || execution(*.new(..)))    && !within(TraceAspect);

before () : traceMethods() {
     if (_logger.isLoggable(Level.INFO)) {
          Signature sig = thisJoinPointStaticPart.getSignature();
          _logger.logp(Level.INFO, sig.getOeclaringType().getName(),sig.getNameO , "Entering");
          }
     )
)

Точка в аспекте определяет, когда следует генерировать сообщения трассировки. Опишите в своими словами когда, то есть в каких точках программы появляется сообщение «Вход» будет сгенерировано.

PS: Это из прошлой экзаменационной работы .... И я пытаюсь понять, когда именно регистратор генерирует вход ...

Ответы [ 2 ]

2 голосов
/ 19 июня 2011

ввод печатается каждый раз перед выполнением метода из класса Account (execution(* Account.*(..))), независимо от возвращаемого значения, имени или параметров;execution(*.new(..)) && Iwithin(TraceAspect) соответствует каждому конструктору, не входящему в TraceAspect (следует читать !within(…) вместо Iwithin - см. Поваренную книгу aspectJ в книгах Google , OCR распознает восклицательный знак ! как заглавную букву i I).

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

Сообщение «Ввод» генерируется перед методами, соответствующими сигнатуре точки выполнения. Похоже, что советовали все звонки на новые для класса Account.

...