Der erste Typ: Annotationskonfiguration AOP
Annotationskonfiguration AOP (implementiert mit der Aspektjklassenbibliothek), grob in drei Schritte unterteilt:
1. Verwenden Sie die Annotation @aspect, um einen Abschnitt zu definieren, den Einstiegspunkt (@pointcut) und den Benachrichtigungstyp (@before,@atthringurning,@After,@sattrowing,@um) zu definieren.
2. Entwickeln Sie Klassen, die abgefangen werden müssen.
3. Konfigurieren Sie den Abschnitt in die XML. In diesem Fall wird es vom Frühlings -AOP -Container verwaltet.
Darüber hinaus müssen Sie das JAR -Paket von AspektJ verweisen: Aspektjweaver.jar Aspektjrt.jar
Beispiel:
User.javapackage com.bjsxt.model; () {password; {public void Save (User User);
Implementieren Sie die Schnittstelle:
Paket com.bjsxt.dao.impl; void Save (Benutzerbenutzer) {System.out.println ("User Save11D!");
Betriebsklasse:
Paket com.bjsxt.service; com.bjsxt.dao.userdao; ; userdao;
Machen Sie AOP bei
Paket com.bjsxt.aop; Aspekt; . .model .user) ")")*/ @before ("myMethod ()") public void vor () {system.out.println ("Methode Staet");} @after ("myMethod ()") public void danach () {System.out.println ("Methode nach"); .Println ("Methode AfterSreturning"); ");}}
Konfigurationsdatei
<? /2001/xmlschemasinstance "xmlns: context =" http://www.springframework.org/schema/context "xmlns: aop =" http://www.spingframework.org/sche ma/aoP "xsi: scheemalocation "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5sd http://www.springframework.org/schema/context http: //www.springframework.org/schema/context/spring-context-2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/sc Hema/AOP/AOP/AOP/AOP/AOP/AOP/AP/AOP/AP/AOP/AP/AOP/AP/AOP/AP/AP/AOP/AP/AOP/AOP/AOP/AP/AP/AOP/AOP/AOP/AOP/AOP/AOP/AOP/AOP) -3.1 .xsd "> <!-Um die letzten 2 Zeilen hinzuzufügen-> <Kontext: Annotation-config /> <context: component-scan base-package =" com.bjsxt " /> <!-Automatischer Scan -> <AOP: Aspektj-autoproxy/> <!-Um diese Zeile hinzuzufügen-> </beans>
Testklasse:
Paket com.bjSxt.Service; Inverse of Control Public Class UserServicetest {@Test public void testadd () löst eine Ausnahme aus {classPhodexMlapplicationContext println (service.getClass ());
Ergebnis:
Klasse com.bjsxt.service.userservice $$ EnhancerByCglib $$ 7B201784Method Statistics Save11D! Methode AfterReturning -Methode nach ###
Beachten:
@Aspect: Das bedeutet, dass diese Klasse eine Facettenklasse ist
@Componet: Da der Frühling als Tangentenklasse verwaltet werden muss, muss diese Klasseninitialisierung während der Initialisierung zum Frühlingsmanagement hinzugefügt werden.
@Befoe: Logik des Einstiegspunkts (Ratschläge)
Ausführung…: Point-Cut-Syntax
Der zweite Typ: XML -Konfiguration AOP
Das gleiche wie oben: Nur die Konfigurationsdatei ist unterschiedlich
<? /2001/xmlschemasinstance "xmlns: context =" http://www.springframework.org/schema/context "xmlns: aop =" http://www.spingframework.org/sche ma/aoP "xsi: scheemalocation "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5sd http://www.springframework.org/schema/context http: //www.springframework.org/schema/context/spring-context-2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/sc Hema/AOP/AOP/AOP/AOP/AOP/AOP/AP/AOP/AOP/AP/AOP/AOP/AP/AP/AOP/AOP/AP/AP/AOP/AOP/AP/AP/AOP/AOP/AOP/AOP/AOP -3.1 .xsd "> <!-Die letzten 2 Zeilen hinzufügen-> <Kontext: Annotation-Config /> <context: component-scan base-package =" com.bjsxt " /> <bean id =" loginterceptor "> < /bean> <AOP: config> <AOP: Pointcut Expression =" Ausführung (public * com.bjsxt.service .. *. add (..)) "id =" servicePointCut " /> <aop: Aspekt -ID = "lo gaspect" ref = "loginterceptor"> <aoP: vor method = "vor" pointcut-ref = "servicePointCut"/> </aop: Aspekt> </aoP: config> </beans>
Das folgende <Bohnen> ist das Feder -Konfigurations -Tag und mehrere wichtige Eigenschaften in Bohnen:
xmlns:
Es ist das Standard -XML -Dokument -Parsing -Format, dh Spring Beans. Die Adresse lautet http://www.springframework.org/schema/beans.
Durch das Einstellen dieser Eigenschaft können alle in Bohnen deklarierten Attribute direkt über <> wie <Bean> usw. verwendet werden.
xmlns: xsi:
Es ist eine Spezifikation, die XML einhalten muss.
XMLNS: AOP:
Dies ist der entscheidende Punkt, und es sind einige semantische Spezifikationen, die wir hier verwenden müssen, die mit tangentorientiertem AOP zusammenhängen.
XMLNS: TX:
Transaktionsbezogene Konfigurationsinhalt im Frühjahr.
Eine XML -Datei kann nur eine Standard -Semantikspezifikation für semantische Parsen deklarieren.
In der obigen XML ist beispielsweise nur eine Bohnen die Standardeinstellung, und die anderen müssen über bestimmte Tags wie AOP verwendet werden, die viele Attribute haben. . Zum Beispiel die AOP: Konfiguration oben.
Wenn der Standard-XMLNs mit AOP-bezogenen semantischen Parsing-Spezifikationen konfiguriert ist, können Sie direkt ein Tag-wie-Konfiguration in XML schreiben.
Die oben genannten sind die beiden Konfigurationsmethoden von Frühlings -AOP. Es gibt mehr Artikel über die Feder -AOP -Konfigurationsmethoden, die Sie später mit Ihnen teilen können.