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 ...
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">
Vous devez effectuer plusieurs étapes pour intégrer Aspectj,
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