Maison  >  Article  >  Java  >  Explication détaillée du partage d'expérience à l'aide d'Aspect pour implémenter la journalisation d'entrée et de sortie de méthode

Explication détaillée du partage d'expérience à l'aide d'Aspect pour implémenter la journalisation d'entrée et de sortie de méthode

巴扎黑
巴扎黑original
2017-07-18 15:14:172267parcourir
@Aspect
public class Aspect
{

    @Before("execution(* com.test.*.*(..))")
    public void logBefore(JoinPoint joinPoint)
    {
        logEnter.....
    }

    @After("execution(* com.test.*.*(..))")
    public void logAfter(JoinPoint joinPoint)
    {
         logExit.....
    }
}

Configuration Spring :

<aop:aspectj-autoproxy/>
    
<bean id="aspect" class="com.test.Aspect"></bean>

Un projet a été récemment développé en raison de la rapidité du projet pendant tout le processus de développement (. chacun C'est le cas pour tous les projets) Par conséquent, dans la phase finale du projet, il a été découvert que la fonction d'enregistrement des journaux système manquait. Dans le passé, le système était écrit directement dans le code de chaque module, puis. stockés dans le formulaire, et une partie des journaux pouvait être consultée sur la page. Ce système n'a pas cette exigence, j'ai donc pensé à créer un journal à l'échelle du système. Les principales données enregistrées comprennent : la durée de l'opération, l'objet de l'opération, la méthode d'opération, certains paramètres de l'opération et les résultats de l'opération. Ce à quoi j'ai immédiatement pensé au début était d'utiliser des aspects pour implémenter la journalisation aop, mais dans les applications réelles, j'ai découvert que les aspects ne peuvent pas intercepter les actions de manière conviviale, mais sont principalement utilisés pour intercepter les activités de la couche de service. Étant donné que le framework système est basé sur le framework ssh, nous avons finalement envisagé d'utiliser l'intercepteur intégré de struts2, Interceptor.

Quel intercepteur ?

Un intercepteur est un objet qui intercepte dynamiquement les appels à l'action. Il fournit un mécanisme qui permet aux développeurs de définir le code à exécuter avant et après l'exécution d'une action, et d'empêcher l'exécution d'une action avant qu'elle ne soit exécutée. Il fournit également un moyen d'extraire des parties réutilisables de l'action. En parlant d'intercepteurs, il y a un autre mot que tout le monde devrait connaître : chaîne d'intercepteurs (Interceptor Chain, appelée pile d'intercepteurs dans Struts 2). La chaîne d'intercepteurs consiste à connecter les intercepteurs en une chaîne dans un certain ordre. Lors de l'accès à une méthode ou à un champ intercepté, les intercepteurs de la chaîne d'intercepteurs seront appelés dans l'ordre dans lequel ils ont été précédemment définis.

Le principe et processus général de l'intercepteur

1. Lorsque ActionInvocation est initialisé, tous les Intercepteurs liés à l'Action sont chargés selon la configuration.

  2. Lorsque l'implémentation de l'action est appelée via la méthode ActionInvocation.invoke, l'intercepteur est exécuté.

Interceptor sépare de nombreuses fonctions de notre action, réduisant considérablement le code de notre action, et le comportement indépendant a une bonne réutilisabilité. De nombreuses fonctions de XWork et WebWork sont implémentées par Interceptor. Vous pouvez assembler l'Interceptor utilisé par Action dans le fichier de configuration. Il s'exécutera avant et après l'exécution de l'Action dans l'ordre que vous spécifiez.


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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn