Antworten:
Stellen Sie sich ein Problem als eine Funktionsgruppe vor, z. B. Protokollierung, Prüfung, Sicherheit
Diese Funktionalitäten sind in den meisten Codes jemals vorhanden, aber in unseren Tier-> Hundeklassen leben sie nicht wirklich - es handelt sich um Funktionalitäten, die in vielen Klassen leben sollten - es handelt sich um Querschnittsthemen .
Ein Joinpoint ist eine Stelle im Code, an der der Aspektcode tatsächlich ausgeführt wird.
Ein Pointcut gibt an, welcher Code am Jointpoint ausgeführt wird.
Weben - wenn der Compiler / das System Ihren normalen Code verwendet und den gesamten AOP-Code einschließt, um den richtigen Code usw. auszulösen - kann dies als zusätzlichen Vorkompilierungsschritt angesehen werden.
Ein einfaches verständliches Beispiel ist:
Bitte beachten Sie, dass die Terminologie zwischen verschiedenen Implementierungen und AOP-Frameworks geringfügig variiert.
Jede Definition baut auf den vorherigen auf.
Etwas, das Sie überall in Ihrer Anwendung stört (betrifft) (übergreifend). zB Protokollierung oder Sicherheit
Ein Codeabschnitt, der automatisch vor , nach oder um Ihren vorhandenen Code ( herum ) hinzugefügt wird
Application code
|
|
|
|
\|/
|
JoinPoint ----------->("before" aspect, on the way in) // just before your intercepted application code
Pointcut start--------> public String myMethod(params ...)
//your application code
Pointcut finish--------> return (foo)
JoinPoint ----------->("after" aspect, on the way out) // just after your intercepted application code
|
\|/
|
|
|
Application code
Eine Stelle in der Codeausführung, an der ein Teil des Aspekts ausgeführt wird.
Der Punkt, an dem Ihr Aspekt den Punktschnitt "verbindet". Bei einem JoinPoint "vor" haben Sie Zugriff auf Parameter, bei einem JoinPoint "nach" haben Sie Zugriff auf den Rückgabewert. Wenn eine Ausnahme ausgelöst wird, benötigen Sie möglicherweise ein "try-catch-finally", um sie zu verarbeiten oder erneut auszulösen.
Der Prozess des Hinzufügens von Aspekten um einen Pointcut