Ich bin neu in meinem Büro. Es gibt also keine Anleitung für mich.
Ich muss die Protokollierung mit der AOP
mit dem log4j
implementieren.
Ich habe die Protokollierung ohne AOP
im einfachen spring MVC
-Beispiel implementiert.
Hat das kleine Beispiel in AOP
die aspectJ
verwendet, ohne zu protokollieren (hat nur die Sysout
gemacht)?
Ich weiß nicht, wie ich es integrieren soll?
Kann mir einer bitte eine Start-Idee geben?
Gute Antworten werden auf jeden Fall geschätzt ...
Der Frühling macht es uns sehr leicht, AOP zu nutzen. Hier ist ein einfaches Protokollierungsbeispiel:
@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...");
}
}
Dann konfigurieren Sie einfach Ihre applicationContext.xml (oder gleichwertig):
<aop:aspectj-autoproxy>
<aop:include name="myLogger"/>
</aop:aspectj-autoproxy>
<bean id="myLogger" class="com.example.aspect.MyLogger"/>
Sie werden in der MyLogger-Klasse feststellen, dass ich @After
direkt über der Methode angegeben habe. Dies wird als Ratschlag bezeichnet und gibt im Wesentlichen an, dass diese "log" -Methode after die betreffende Methode genannt wird. Andere Optionen umfassen @Before, @Around, @AfterThrowing
.
Der Ausdruck "execution(* com.example.web.HomeController.*(..))"
wird als Punktschnittausdruck bezeichnet und gibt an, worauf wir abzielen (in diesem Fall alle Methoden der HomeController-Klasse).
P.S. Der aop
-Namespace (xmlns:aop="http://www.springframework.org/schema/aop"
) und die Position des Schemas (versionsabhängig) müssen Ihrer applicationContext.xml oben rechts hinzugefügt werden. Hier ist mein Setup:
<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">
Sie müssen mehrere Schritte ausführen, um Aspectj zu integrieren.
Hier ist ein Beispiel aop.xml,
<aspectj>
<aspects>
<aspect name="test.MySimpleLoggerAspect" />
</aspects>
<weaver>
<include within="test.myproject.*" />
</weaver>
</aspectj>
wenn Sie bereits spring verwenden, ist es besser, spring zu verwenden, um Ihr Setup zu vereinfachen. Hier ist ein gutes Beispiel http://forum.springsource.org/showthread.php?61551-Bean -Factory-is-not-set-for-BeanConfigurerSupport