Dépannage de l'échec AOP pour les appels de méthodes imbriquées au printemps
Dans la classe ABC.java, deux méthodes sont définies : method1() et method2 (). L'objectif est d'implémenter AOP pour les appels method2().
Une approche consiste à créer une classe AOPLogger.java avec une méthode d'aspect checkAccess(). Dans le fichier de configuration, un bean conseil est défini et un aspect est configuré pour invoquer checkAccess() avant que method2() ne soit appelé.
Cependant, malgré ces configurations, la méthode checkAccess() n'est pas invoquée lorsque method2( ) est exécuté.
Cause première :
Dans Spring AOP, les aspects sont appliqués à un objet proxy entourant le bean. Lorsqu'une instance de bean est obtenue, il ne s'agit pas de la classe réelle mais d'une classe synthétique implémentant des interfaces et ajoutant des fonctionnalités comme AOP.
Résolution :
Dans le scénario actuel, method1() appelle directement method2(). L'aspect n'est pas déclenché car la méthode n'est pas invoquée sur l'objet proxy.
Pour résoudre ce problème, il existe deux options :
Explication :
La documentation Spring sous « Comprendre les proxys AOP » développe ce comportement et propose des solutions de contournement. Une solution de contournement consiste à séparer les méthodes en beans distincts, comme suggéré ci-dessus.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!