Vorheriger Artikel Die Einführung von Java -Anmerkungen erläutert die grundlegende Verwendung von Java -Anmerkungen und implementiert ein einfaches Testwerkzeug durch benutzerdefinierte Annotationen. In diesem Artikel wird vorgestellt, wie die AOP von Spring Boot verwendet wird, um die Verarbeitung benutzerdefinierter Anmerkungen zu vereinfachen, und erläutert diese Inhalte, indem ein einfaches Statistik -Tool für Methodenausführungszeiten als Beispiele implementiert wird.
AOP -Konzept
Aspekt-orientierte Programmierung (AOP, auch als Aspekt-orientiertes Programmieren, perspektive-orientierte Programmierung und Abschnittsorientierter Programmierung) ist ein Begriff in Informatik, der sich auf ein Programmierparadigma bezieht. Dieses Paradigma basiert auf einer Sprachkonstruktion, die als Aspekt bezeichnet wird und ein neuer modularer Mechanismus zur Beschreibung von Crosscutting -Bedenken ist, die in Objekten, Klassen oder Funktionen verstreut sind.
Das Konzept der Seite stammt aus Verbesserungen der objektorientierten Programmierung, ist jedoch nicht darauf beschränkt, sondern kann auch zur Verbesserung der herkömmlichen Funktionen verwendet werden. Die auf der Seite bezogenen Programmkonzepte umfassen auch Meta-Objekt-Protokolle, Probanden, Mixins und Delegationen.
Hinweis: Die obige Definition stammt aus chinesischer Wikipedia (wenn Sie nicht darauf zugreifen können, können Sie darauf zugreifen, indem Sie die Hosts -Datei des Systems ändern. 198.35.26.96 Zh.wikipedia.org #chinesische Wikipedia, die nur helfen können. Wenn Sie immer noch nicht zugreifen können, können Sie nicht online suchen. Wenn Sie die Datei des Systems ändern. Sagen Sie Ihnen direkt. Die Übersetzung des Wortes AOP ist ein bisschen unvereinbar mit dem Mainstream -Namen in China. Die inländische Mainstream-Übersetzung von AOP ist "Gesichtsorientierter Programmierung". Halten Sie sich nicht an den Namen, wissen Sie nur, dass es sich auf dasselbe bezieht.
Ich denke, Sie sind verwirrt, nachdem Sie diese Definition gelesen haben. Wenn Sie ein tieferes Verständnis haben möchten, können Sie nach Zhihu gehen, um zu sehen, wie die großen Jungs darüber streiten, was der AOP auf der orientierten Programmierung ist? . Ich nehme besser das Beispiel hier.
Die Vorbereitung der AOP -Umgebung von Spring Boot Stiefel
Führen Sie entsprechende Abhängigkeitsmodule in pom.xml ein
<!-Spring Boot Depellenty Paket-> <in <Strups> org.springFramework.boot </GroupId> <artifactId> Spring-Boot-Starter-Parent </artifactId> <version> 1.5.1.Release </Version> </parent> <Deanging> <! <artifactid> Spring-Boot-Starter-AOP </artifactid> </abhängig> <!-Webabhängigkeitsmodul-> <De vorstellen> <gruppe> org.springFramework.boot </Groupid> <artifactid> Spring-Boot-Starter-Web </artifactid> </abhängig> </abhängig> </abhängig> </abhängig> </abhängig> </abhängig> </abhängig> </abhängig
Implementieren Sie zuerst eine einfache Webanforderungsverarbeitung
Ein einfacher Controller für die Bearbeitung von Webanfragen.
Paket com.craneyuan.controller; import com.craneyuan.service.ihelloworldservice; import org.springframework.bean.factory.annotation.autowired; org.springframework.web.bind.annotation.requestMethod; import org.springframework.web.bind.annotation.restcontroller; @RequestMapping (value = "/hello", method = requestMethod.get) public string hello (String name) {return helloWorDService.gethellomessage (Name); }}Ich werde den Code nicht für eine einfache HelloWorld -Service -Implementierungsklasse anzeigen.
Paket com.craneyuan.service.impl; Import com.craneyuan.Annotation.Analysisactuator; Import com.craneyuan.service Java.util.Optional; @ServicePublic Class HelloWorldServiceImpl implementiert iHelloworldService {public String gethellomessage (String -Name) {return "hello" + optional.ofnullable (name) .Orelse ("World!"); }}Ein so einfacher Webdienst ist fertig. Sie können das Projekt starten und es mit dem CURL -Befehl anrufen, zum Beispiel: curl -xget -i "http://127.0.0.1:8080/hello?name=java". Wenn alles gut läuft, erhalten Sie eine Antwort wie folgt:
Http/1.1 200Content-Typ: text/plain; charset = utf-8content-length: 11date: Thu, 11. Januar 2018 09:45:38 Gmthello Java
Verwenden Sie benutzerdefinierte Anmerkungen, um die Ausführungszeit einer Methode zu zählen
Definieren Sie zunächst eine Annotation, mit der die Ausführungszeit der Methode zählt.
Paket com.craneyuan.Annotation; import Java.lang.Annotation.elementtype; Import Java.lang.Annotation String note () Standard "";}
Definieren Sie dann einen Abschnitt, um die gerade definierte Annotation zu bewältigen.
Paket com.craneyuan.aspep; import com.craneyuan.Annotation org.slf4j.loggerfactory; import org.springframework.core.Annotation.order; org.springFramework.stereotype.comPonent;@Aspekt@componentpublic class AnalysisActuatoraspect {endgültig statischer logger logger- ThreadLocal <Long> BeginTime = new ThreadLocal <> (); @Pointcut (" @Annotation (AnalysisActuator)") public void servicestatistics (AnalysisActuator AnalysisActuator) {} @before ("servicestatistics (AnalysisActuator)") public void dobefore (joinpoint joinpoint, AnalysisActuator) {// Aufzeichnung der Antragsankunftszeit. log.info ("Cy666 Hinweis: {}", AnalysisActuator.Note ()); } @After ("servicestatistics (AnalysisActuator)") public void doafter (AnalysisActuator AnalysisActuator) {log.info ("Cy666 Statistische Zeit: {}, Anmerkung: {}", System.CurrentTimemillis () - Begint.get.get (), AnalysisActuator.note (); }}Fügen Sie schließlich die Annotation @analysisactuator zu der Methode hinzu, die die Ausführungszeit zählen muss.
Paket com.craneyuan.service.impl; Import com.craneyuan.Annotation.Analysisactuator; Import com.craneyuan.service Java.util.Optional; @ServicePublic Class HelloWorldServiceImpl implementiert IHelloworldService {@analysisactuator (note = "Chat -Informationsmethode erhalten") public String Gethellomessage (String Name) {return "Hallo" + optional.ofnullable (Name) .Orelse ("World!"); }}Starten Sie das Projekt und rufen Sie es beiläufig mit dem Curl -Befehl an. Wenn es gut läuft, können Sie das im Gesicht gedruckte Protokoll beobachten.
... Cy666 Statistikzeit: 4, Hinweis: Methode zum Erhalten von Chat -Informationen
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.