IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Action automatique en début et fin de méthode


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Par défaut Action automatique en début et fin de méthode
    Bonjour,

    J'aimerai savoir si quelqu'un connait un moyen en java d'automatiser différentes actions (l'appel d'une méthode statique, par exemple) au début et à la fin d'un grand nombre de méthodes.

    En gros, j'ai une méthode statique (appelons-la Perso.log() ) qui génère des logs personnalisés et que je dois appeler en début et fin d'un tres grand nombre de méthodes dans mon application.
    Au lieu de copier/coller les appels à Perso.log() dans toutes les méthodes de quasi toutes les classes de mon appli, je me demandais s'il était pas possible d'automatiser le processus, un peu sur le même principe que les OnLoad() et autres pour les composants graphiques (je comprend qu'il y a une enorme difference, mais c'est pour expliquer le concept).

    Peut-être en utilisant des @annotations, ou en passant par une interface ou classe abstraite qui serait implémentée/héritée par toutes les classes dont je veux "logger" les méthodes ?

    Si quelqu'un l'a déjà fait, ou a une idée qui pourrait marcher, je suis preneur!

    Merci d'avance,

    Nymethny.

  2. #2
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Par défaut
    Merci beaucoup pour cette réponse, je sais maintenant que ce que je veux faire est possible .
    Je vais donc orienter mes recherches du coté de l'AOP.

    J'ai tout de même une petite question (probablement stupide, mais... ) :
    N'utilisant pas Spring, et n'étant pas particulièrement familier avec les différents framework, je ne suis pas sur d'avoir compris comment cela fonctionne réellement.
    Vu que l' "ajout" de code se fait visiblement à la compilation, faut il obligatoirement utiliser un framework ?
    Ou cela peut-il être géré uniquement par une/des librairie(s) à inclure dans le projet ?

    Merci d'avance,

    Nymethny.

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Par défaut
    Si tu utilises l'AOP Spring, alors il faut intégrer Spring (une lib). L'ajout des aspects se fait au runtime. D'ailleurs que dans le contexte Spring, c'est à dire pour les instances qui ont été créées par Spring.
    Par contre il existe une autre manière de faire de l'AOP avec aspectJ pour laquelle le tissage (weaving), c'est à dire l'ajout des aspects, se fait à la compilation. Avantage: dans ce cas il n'y a pas la limitation sur les instances qui ont les aspects ou pas comme pour Spring. Inconvénient: c'est une phase de compilation particulière donc ton process de build doit être adapté.
    Dans les deux cas tu introduis une dépendance runtime (aspectjrt.jar pour aspectJ, Spring+ses dépendances dans le cas AOP Spring).

  5. #5
    Membre chevronné Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Par défaut
    Regarde plutôt du côté d'AspectJ:

    http://www.eclipse.org/aspectj

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 766
    Par défaut
    Utiliser Spring et faire de l'AOP juste pour faire du logging, c'est gaché quand même. A la place d'avoir les appels dans le code il aura 4 km de fichier xml.
    Tu seras content avec ton gros fichier xml.

    Quel est le soucis de faire un appel a un logger partout dans ton code ?
    C'est très classique et très utilisé.

Discussions similaires

  1. [Tests] Un freeware pour les actions automatique
    Par layouni dans le forum Windows
    Réponses: 1
    Dernier message: 06/09/2006, 17h23
  2. Début et fin de semaine
    Par lebulls dans le forum Langage
    Réponses: 3
    Dernier message: 07/07/2006, 06h52
  3. [AJAX] IE coupe début et fin de chaine
    Par julien.63 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/07/2006, 17h39
  4. transférer une valeur du début à la fin
    Par arti2004 dans le forum Langage
    Réponses: 12
    Dernier message: 24/05/2006, 18h19
  5. Comment désactiver les actions automatiques de Windows ?
    Par j-phi dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 06/01/2005, 12h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo