wake-up-neo.com

protokollierung mit AOP im Frühling?

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 ...

17
Human Being

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">
34
Markus Coetzee

Sie müssen mehrere Schritte ausführen, um Aspectj zu integrieren.

  1. Installieren Sie AspectJ http://www.cs.utep.edu/cheon/cs3360/project/proj1/installing-aspectj.txt
  2. Fügen Sie Ihre aop.xml zu META-INF\aop.xml in Ihrem Projekt hinzu
  3. Fügen Sie aspectjrt-x.x.0.jar und aspectjweaver-x.x.0.jar in Ihren Projektklassenpfad ein
  4. Fügen Sie der JVM Ihres Servers -javaagent:/path to aspectj installation/aspectjweaver-1.7.0.jar hinzu.

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

0
Avinash Singh