AOP est une abréviation de Aspect Oriented Programming, qui est une méthode de programmation qui conçoit et met en œuvre en mettant l'accent sur des préoccupations transversales dispersées dans plusieurs classes.
[Présentation approfondie du développement d'applications Spring Java avec Spring Framework](https://www.amazon.co.jp/Spring introduction approfondie-développement d'applications Java avec Spring-Framework-NTT Data Co., Ltd./dp/4798142476/) Je vais résumer les points importants sur l'explication de l'AOP. * (Le nombre de pages du livre est indiqué pour que vous puissiez y revenir plus tard) *
À propos des termes typiques d'AOP (P.59)
Aspect Le module lui-même qui montre les intérêts transversaux qui sont l'unité de l'AOP. Par exemple, «journal de sortie», «gérer les exceptions», «gérer les transactions», etc. sont appelés Aspect.
Join Point Le point auquel Aspect est exécuté (lors de l'exécution d'une méthode, de la levée d'une exception, etc.). Join Point dans Spring AOP correspond au moment où la méthode est exécutée.
Advice Code qui s'exécute à un point de jonction particulier. Où mettre en œuvre les préoccupations transversales. Il existe plusieurs types tels que Autour, Avant et Après.
Pointcut Une expression (expression) qui sélectionne le point de jointure à exécuter. Il peut être considéré comme un groupe de points de jonction. Dans Spring AOP, Pointcut est défini par la définition et l'annotation de Bean. Par exemple, il décide de ne s'exécuter que dans la classe nommée XXController, ou de ne s'exécuter que dans le cas du nom de méthode commençant par find. Vous pouvez spécifier un caractère générique.
Weaving Processus d'insertion d'Aspect au point approprié du code d'application. Le tissage est effectué au moment de l'exécution dans Spring AOP.
Target Un objet dont le flux de traitement a été modifié par le traitement AOP. Parfois appelé un objet recommandé.
Les 5 conseils suivants sont disponibles dans Spring AOP. (P.60)
Advice | Aperçu |
---|---|
Before | Un conseil qui court avant Join Point. |
After Returning | Avis à exécuter après la fin normale de Join Point. Si une exception est levée, elle ne sera pas exécutée. |
After Throwing | Avis qui est exécuté après qu'une exception est lancée à Join Point. S'il se termine normalement, il ne sera pas exécuté. |
After | Des conseils qui courent après Join Point. Il est exécuté indépendamment de l'arrêt normal ou de l'exception. |
Around | Des conseils qui fonctionnent avant et après Join Point. |
Une méthode de description qui sélectionne le point de jointure à exécuter en écrivant l'exécution comme indiqué dans le code source ci-dessous. (P.69)
@Aspect
@Component
public class MethodStartLogAspect {
// *Exemple de conseil à exécuter par n'importe quelle méthode avec le nom de classe Controller
@Before("execution(* *..*Controller.*(..))")
public void startLog(JoinPoint jp) {
System.out.println("Début de la méthode:" + jp.getSignature());
}
}
Utilisez le spécificateur d'exécution lors de l'expression du point de jointure cible en spécifiant le modèle de nom de méthode.
execution(* com.example.domain.*Service.find*(..))
/*
Dans l'exemple ci-dessus
La valeur de retour est*
Le nom du package est com.example.domain
Type, nom de classe*Service
Le nom de la méthode est find*
Arguments de 0 ou plus
Représente.
*/
Les caractères génériques qui peuvent être utilisés dans l'expression Pointcut sont les suivants. (P.70)
Caractère générique | La description |
---|---|
* | Fondamentalement, il représente une chaîne de caractères arbitraire, mais lors de l'expression d'un package, il représente une couche de package 1 arbitraire. Lors de l'expression d'un argument de méthode, il représente un nombre d'arguments. |
.. | Toute façon de représenter un colis(0 ou plus)Représente un package. Arbitraire lors de l'expression d'arguments de méthode(0 ou plus)Représente un argument numérique. |
+ | En spécifiant après le nom de la classe, il représente la classe et toutes ses sous-classes / classes d'implémentation. |
[Présentation approfondie du développement d'applications Spring Java à l'aide de Spring Framework](https://www.amazon.co.jp/Thorough introduction au développement d'applications Spring-Java à l'aide de Spring-Framework-NTT Data Co., Ltd./dp/4798142476/)
Recommended Posts