web-dev-qa-db-fra.com

exploitation forestière avec AOP au printemps?

Je suis nouveau au printemps dans mon bureau. Donc, il n'y a pas de conseils pour moi.

Je dois implémenter la journalisation avec AOP à l'aide du log4j

J'ai implémenté la journalisation sans AOP dans l'exemple spring MVC de base?

Le petit échantillon de AOP a-t-il également utilisé la aspectJ sans journalisation (vient de créer la Sysout)?

Je ne sais pas comment l'intégrer?

Quelqu'un peut-il me donner une idée de démarrage, s'il vous plaît?

Les bonnes réponses sont certainement appréciées ...

17
Human Being

Le printemps nous facilite vraiment l’utilisation de l’AOP. Voici un exemple de journalisation simple:

@Aspect
public class MyLogger {

    private Logger log = Logger.getLogger(getClass());

    @After("execution(* com.example.web.HomeController.*(..))")
    public void log(JoinPoint point) {
        log.info(point.getSignature().getName() + " called...");
    }
}

Ensuite, configurez simplement votre applicationContext.xml (ou équivalent):

    <aop:aspectj-autoproxy>
        <aop:include name="myLogger"/>
    </aop:aspectj-autoproxy>

    <bean id="myLogger" class="com.example.aspect.MyLogger"/>

Vous remarquerez dans la classe MyLogger que j'ai spécifié @After juste au-dessus de la méthode. Ceci s'appelle le conseil et spécifie en gros que cette méthode 'log' sera appelée après la méthode en question. Les autres options incluent @Before, @Around, @AfterThrowing

L'expression "execution(* com.example.web.HomeController.*(..))" est appelée une expression en points et spécifie ce que nous ciblons (dans ce cas, toutes les méthodes de la classe HomeController).

P.S. L'espace de noms aop (xmlns:aop="http://www.springframework.org/schema/aop") et l'emplacement du schéma (dépendant de la version) doivent être ajoutés à votre applicationContext.xml tout en haut. Voici ma configuration:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
34
Markus Coetzee

Vous devez effectuer plusieurs étapes pour intégrer Aspectj,

  1. Installez AspectJ, http://www.cs.utep.edu/cheon/cs3360/project/proj1/installing-aspectj.txt
  2. Ajoutez votre fichier aop.xml à META-INF\aop.xml dans votre projet.
  3. Ajoutez aspectjrt-x.x.0.jar et aspectjweaver-x.x.0.jar dans le chemin d'accès aux classes de votre projet
  4. Ajoutez -javaagent:/chemin d'accès à aspectj installation/aspectjweaver-1.7.0.jar sur la machine virtuelle Java de votre serveur.

Voici un exemple aop.xml,

<aspectj>
 <aspects>
  <aspect name="test.MySimpleLoggerAspect" />
 </aspects>
 <weaver>
  <include within="test.myproject.*" />
 </weaver>     
</aspectj>

si vous utilisez déjà Spring, il est préférable d’utiliser Spring pour simplifier votre configuration. En voici un bon exemple, http://forum.springsource.org/showthread.php?61551-Bean-Factory-is- non-set-for-BeanConfigurerSupport

0
Avinash Singh