Aspektj beschreibt Tangente und Verbesserung durch Anmerkungen.
1 Entwicklungsumfeldanforderungen
Da Sie Anmerkungen verwenden möchten, stellen Sie sicher, dass Sie Java 5.0 und höher verwenden.
Führen Sie die Aspekt -Klassenbibliothek ein:
<De vorhöhe> <gruppe> org.aspespectj </Groupid> <artifactId> Aspektjrt </artifactId> <version> $ {Aspektj.version} </Version> </abhängig> <depeclepecy> <GroupID> org.aspactid <version>${aspectj.version}</version></dependency><dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjtools</artifactId> <version>${aspectj.version}</version></dependency><dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjtools</artifactId> <version> $ {Aspektj.Version} </Version> </abhängig> <depelzus> <gruppe> aopalliance </Groupid> <artifactid> aopalliance </artifactid> <version> $ {aopalliance.version} </Version> </abhängig> 2 Programmiermethoden
@Aspekt // Facetten identifizieren
public class Prerentaspect {/*** Enhanced Logic*/@before ("Ausführung (* rent (..)") ") // Definieren Sie Tangenten- und Verbesserungstypen public void void beerent () {system.out.println (" Ausführung von Mietaktionen beginnen "); }}Dieser Abschnitt ist nur ein gewöhnliches Pojo, aber die @aspect -Annotation wird hinzugefügt.
@Before("execution(* rent(..))") bedeutet, dass der @Before eine vorverstärkte Verbesserung ist und sein Inhalt ein @aspespectj-Punktausdruck ist. Hier bedeutet dies, dass die Verbesserung auf die Rent () -Methode der Zielklasse gewehrt wird. Rent () kann eingehende Parameter und einen beliebigen Rückgabewert enthalten.
Ist es für eine Klasse mit @Aspect nicht sehr bequem, den Tangentenpunkt, den Verbesserungstyp und eine verbesserte Übergangslogik durch Annotation und Code zu integrieren? O (∩_∩) o haha ~
Unit -Tests:
AspektjProxyFactory Factory = new Aspektjproxyfactory (); // Setzen Sie die Zielklasse Factory.Settarget (neuer Benutzer ()); // Fügen Sie die Facettenklasse Factory.Addaspespe (Prerentaspespe.class); User Proxy = factory.getProxy ();
Ausgangsergebnis:
-Starten Sie die Mietaktion-
Benutzer: Miete [Power Bank]
Benutzer: Rückgabe [Power Bank]
3 Konfigurationsmethode
<!-Zielklasse-> <bean id = "user"/> <!-Gesichtsklasse-> <bean/> <!-automatisch erstellen Agent-> <bean/>
Unit -Tests:
ApplicationContext context = new classSpathXmlApplicationContext (spring.xml "); user user = (user) context.getBean (" user "); String userID =" 001 "; user.rent (userId); user.back (userId);Die Ausgabe entspricht genau dem Programm.
Es kann auch basierend auf dem AOP -Namespace von Schema konfiguriert werden:
<? xmlns: aop = "http://www.springframework.org/schema/aop" xsi: schemalocation = "http://www.spingframework.org/schema/beans http://www.springframe.org/schema/beans-ban- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd "> <!-Aspektj Drive-> <aop: Aspekt: Aspektj-Autoproxy/> <! <bean/> </beans>
Diese Konfiguration ist einfacher. Tatsächlich wurde der automatische Proxy-Modus innerhalb von <aop:aspectj-atuoproxy/> o (∩_∩) o haha ~ übernommen
proxy-target-class Attribut von <aop:aspectj-atuoproxy/> ist standardmäßig falsch, was darauf hinweist, dass die Verbesserung mithilfe der JDK-Dynamischen Proxy-Technologie gewebt wird. Wenn dieser Wert wahr ist, zeigt er an, dass die Verbesserung mithilfe der CGGLIB Dynamic Proxy -Technologie gewebt wird. Wenn die Zielklasse die Schnittstelle nicht deklariert, auch wenn proxy-target-class auf false eingestellt ist, ist das erweiterte Yo O (∩_∩) o haha ~
Für Projekte, die auf Java 5.0+ basieren, wird empfohlen, AspektJ zur Konfiguration von Point-Schnitt und Verbesserung zu verwenden, da dies einfacher und direkter ist.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.