[JAVA] À propos de Spring AOP

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) *

Terminologie AOP

À propos des termes typiques d'AOP (P.59)

Conseils disponibles au printemps

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.

Formule de coupe en 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());
	}
}

Sélectionnez le point de jonction cible par nom de méthode

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.
*/

Caractères génériques disponibles dans les expressions Pointcut

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.

Source de référence

Livres

[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

À propos de Spring AOP
À propos de Spring AOP
A propos de Spring AOP Pointcut
À propos du printemps ③
A propos de la liaison de l'annotation Spring AOP
À propos de l'authentification Spring Security
À propos de DI of Spring ①
À propos de DI of Spring ②
Présentation de Spring AOP
[Notes personnelles] À propos du framework Spring
À propos de l'erreur de contexte Spring Framework
Introduction à Spring Boot ② ~ AOP ~
[Java] Ordre d'exécution de Spring AOP
À propos =
À propos des annotations liées à Spring DI
Une histoire sur une BeanNotOfRequiredTypeException qui s'est produite après l'application d'AOP au printemps
Comment faire un test unitaire de Spring AOP
cadre de printemps Mémo d'étude simple (2): AOP
Spring AOP pour la première fois
À propos des erreurs lors de la mise en œuvre de la validation du printemps
À propos de Kotlin
À propos de attr_accessor
À propos de Hinemos
Journal système de sortie par la technologie Spring AOP
printemps × docker
Injection de dépendances Spring à l'aide de Java, Kotlin
javascript AOP
À propos des rails 6
À propos d'énumération
À propos du polymorphisme
À propos facultatif
À propos du hachage
À propos de JitPack
À propos de ça ()
À propos de l'affichage initial de Spring Framework
À propos de l'encapsulation
À propos de JAVA_HOME
À propos de statique
À propos des exceptions
Spring Java
Comment écrire un spécificateur de coupe de point Spring AOP
À propos de la portée
[Maven] À propos de Maven
À propos de la conception de Spring Boot et de l'environnement de test unitaire
Résumé de ce que j'ai appris sur Spring Boot
À propos du guide de démarrage officiel de Spring Framework
Correspond aux annotations sur l'interface avec Spring AOP
Spring Boot + Spring Data JPA À propos des jointures de table multiples