AspectJ - Join Points und Pointcuts. Unterschied?

Status
Nicht offen für weitere Antworten.
K

kasi1983

Gast
Hallo,

Ich beschäftige mich seit kurzem mit AspectJ, habe aber da ein paar kleinere Verständnisprobleme bei den Grundlagen.
Ich habe gelesen Join Points nennt man alle eindeutig identifizierbaren, wohldefinierten Punkte im Programmfluss (z.B. Methodenaufruf oder -ausführung). Ok, das verstehe ich. Leider widersprechen sich im folgenden dann meine verschiedenen Quellen. :###
ist
Code:
execution(void Client.send(String))
denn nun ein Join Point (weil es steht ja für die Ausführung der Methode) oder schon ein Pointcut? Oder ist ein Joinpoint dann ein Pointcut, wenn er mit
Code:
pointcut clientSend() : execution(void Client.send(String))
einen Namen bekommen hat?

Ah ja, und noch ne Kleinigkeit: man kann ja nur bestimmte join points ansprechen - man nennt die dann exposed join points. Haben die auch einen deutschen Namen?

Danke schon mal

Kerstin
 

odysseus

Bekanntes Mitglied
Also mit AspectJ ists bei mir auch schon eine Weile her.

Join Points sind, so merke ich mir das, "genau das selbe" wie Break Points, die Du zum debuggen im Quelltext setzt.
Deshalb also eine eindeutig identifizierbare Stelle im Programmablauf. Wo Du Deine Join Points setzt ist völlig Dir überlassen.

Ein Pointcut ist eine Zusammenfassung von Join Points (0 bis unendlich). Diese Zusammenfassung macht man mit bestimmten Ausdrücken (Expressions) die AspectJ sagen welche Join Points gemeint sind.

Aus der Doku:

In AspectJ, pointcuts pick out certain join points in the program flow. For example, the pointcut
call(void Point.setX(int))

picks out each join point that is a call to a method that has the signature void Point.setX(int)
So einen Pointcut könnte man auch so schreiben:

call(void Point.set*(int))

Das Sternchen dient als Wildcard und umfasst damit alle Methoden-Signaturen die diesem Ausdruck entsprechen, also alle Methoden der Klasse Point, die mit "set" beginnen und "int" als Parameter annehmen. Das könnte jetzt auf 0 Methoden zutreffen oder auf 20, kommt auf die Point-Klasse an. Und so ist ein Pointcut eben ein Container für Join Points.

@see:

www.eclipse.org/aspectj/doc/released/progguide/starting.html
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben