Réponses:
Considérez une préoccupation comme un groupe de fonctionnalités, par exemple la journalisation, l'audit, la sécurité
Ces fonctionnalités sont toujours présentes dans la plupart des codes, mais elles ne vivent pas vraiment dans nos classes d'animaux-> chiens - ce sont des fonctionnalités qui devraient vivre dans de nombreuses classes - elles sont des préoccupations transversales .
Un Joinpoint est un endroit dans le code où le code d'aspect est réellement exécuté.
Un pointcut est comment dire quel code s'exécute au point commun.
Le tissage - c'est quand le compilateur / système prend votre code normal et inclut tout le code AOP afin qu'il déclenche le bon code, etc. - peut penser à cela comme une étape de précompilation supplémentaire.
Un exemple simple et compréhensible est:
Veuillez noter que la terminologie diffère légèrement entre les différentes implémentations et les cadres AOP.
Chaque définition s'appuie sur les précédentes.
Quelque chose qui vous dérange (inquiétude) partout (transversal) dans votre application. par exemple, journalisation ou sécurité
Un morceau de code qui est automatiquement ajouté avant , après ou les deux ( autour ) de votre code existant
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
Une place dans l'exécution de code où une partie de l'aspect s'exécute.
Le point où votre aspect "rejoint" le point de coupe. A "avant" joinPoint, vous aurez accès aux paramètres, à "après" joinPoint, vous aurez accès à la valeur de retour. Si une exception est levée, vous pouvez avoir besoin d'un "try-catch-finally" pour la gérer ou la relancer.
Le processus d'ajout d'aspects autour d'un pointcut