-
Compter appel méthode
Bonjour à tous,
j'ai une application J2EE qui tourne avec SPRING. J'aimerais compter le nombre d'appel à une méthode et afficher le resultat dans la console en fin mais sans modifier les codes sources.
Pour ça je voudrais utiliser spring aop, mais je ne sais pas trop comment faire. J'ai defini une classe qui va compter les appels de ma méthode. Mais je ne sais pas comment faire pour qu'il initialise le compteur en début de traitement et qu'il me l'affiche en fin de traitement.
Je pensais faire une deuxieme classe qui intercepterai la methode main, mais manifestement ça ne marche pas.
Quelqu'un aurait-il une idée?
Merci d'avance.
-
T'as vraiment besoin de l'AOP pour faire ça?tu peux juste pas avoir une variable globale qui s'incrémente à chaque fois tu rentres dans ta méthode et t'affiche sa valeur à la fin de la méthode puis se réinitialise?
Si tu veux faire de l'AOP il te faux faire une coupe sur ta méthode, et ça revient à la même chose mais tu veux pas avoir la variable à l'intérieur de la méthode peut être mais je ne peux pas t'aider il faut que tu commences avant que je t'aide parce qu'on apprend pas l'AOP comme ça, commence et pose des questions tu auras certainement des réponse mais demanader de faire à la ta place...compliqué. Autre chose tu veux faire comment ton AOP, par annotation, xml, Spring, AspectJ pure...? voilà pourquoi c'est difficile de t'aider
-
Bonjour et merci pour ta réponse.
En fait en passant par des variables et tout ça je l'ai deja fait. ça marche tres bien d'ailleurs. Mais se que je voudrais c'est faire une interception total, dans le sens ou je voudrais ne pas modifier une seule ligne de code dans mes classes.
J'ai déjà demandé autour de moi, même les archi ne savent pas comment faire.
Déjà, est-ce possible?
Pour précision, je passe par des balises dans le fichier de config xml pour aop.
-
Je suis anti xml, donc je pourrais pas trop aider. L'idée reste la même en xml ou en annotation.
Ta classe doit implémenter une interface déclarant la méthode que tu veux intercepter. Après tu crées une coupe du type Arround, comme ça t'as ce qui se passe avant et après ta méthode. Donc au début de ta coupe, tu vérifies si c'est la méthode que souhaites intercepter, si oui tu fais un i++ où ton i est déclaré en tant field dans aspect et après ton proceed tu affiches le résultat dans la console comme tu veux avec un log4j. Normalement t'as juste besoin de 5 lignes au max pour l'écrire. Mais les coupes avec xml sont trop lourdes à mon avis depuis la révolution des annotations dans le monde Java. Bientôt le xml va disparaître ou se réduira à 10% d'utilisation plus précisément pour les web services...