Detaillierte Erläuterung der Spring AOP-Anmerkungen
Aspekt: Aspekt
Aspekt = Punktschnitt + Benachrichtigung. In alten Spring-Versionen wird normalerweise die XML-Konfiguration verwendet, aber jetzt wird eine Klasse normalerweise mit @Aspect annotiert. Aspekte sind dafür verantwortlich, übergreifende Logik (Ratschläge) in bestimmte Verbindungspunkte einzubinden.
Zielobjekt: Ziel
Das zu verbessernde Objekt.
Join Point: JoinPoint
Der Programmausführungspunkt, der abgefangen werden kann, ist die Methode in der Klasse im Frühjahr.
Einstiegspunkt: PointCut
Die Methode, die das Abfangen durchführen muss, dh die Methode, die speziell die übergreifende Logik implementiert. Pointcut-Regeln werden im Frühjahr durch die Pointcut-Ausdruckssprache AspectJ beschrieben.
Der Unterschied zwischen Einstiegspunkten und Verbindungspunkten: Verbindungspunkte sind alle Punkte, die „geschnitten“ werden können; Einstiegspunkte sind die Punkte, die wirklich geschnitten werden wollen.
Beratung: Beratung
Übergreifende Logik für Einstiegspunkte, einschließlich verschiedener Arten von Ratschlägen wie „um“, „vorher“ und „nachher“ .
Der Benachrichtigungsaktionspunkt ist wie folgt benannt:
vorher: wird vor dem Einstiegspunkt ausgeführt
nachher: nach Nach dem Einstiegspunkt ausführen
um: Abfangmethode am Einstiegspunkt, vor und nach der Anpassung, flexibler
Es gibt auch einige Ausnahmebehandlungsbenachrichtigungen. Hier sind keine Beispiele für
Weben: Weben
Der Prozess des Verbindens von Aspekten und Zielobjekten, um Proxy-Objekte zu erstellen. Im Frühjahr wird ein dynamischer Proxy verwendet. Wenn das Zielobjekt über eine Schnittstelle verfügt, verwenden Sie den dynamischen JDK-Proxy. Andernfalls verwenden Sie den dynamischen cglib-Proxy.
Nachdem wir über so viele Konzepte gesprochen haben, kann ein Blick auf die Code-Implementierung den Lesern helfen, sie besser zu verstehen. Hier ist eine einfache AOP-Demo, die die Methode durch Anmerkungen erweitert.
Zuerst ist die Aspektklasse:
package com.example.demo.aop; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; import org.springframework.stereotype.Component; /** * @author Fcb * @date 2020/6/20 * @description 切面类=切入点+通知 */ @Aspect @Component public class LogAspect { //这个方法定义了切入点 @Pointcut("@annotation(com.example.demo.aop.anno.MyLog)") public void pointCut() {} //这个方法定义了具体的通知 @After("pointCut()") public void recordRequestParam(JoinPoint joinPoint) { for (Object s : joinPoint.getArgs()) { //打印所有参数,实际中就是记录日志了 System.out.println("after advice : " + s); } } //这个方法定义了具体的通知 @Before("pointCut()") public void startRecord(JoinPoint joinPoint) { for (Object s : joinPoint.getArgs()) { //打印所有参数 System.out.println("before advice : " + s); } } //这个方法定义了具体的通知 @Around("pointCut()") public Object aroundRecord(ProceedingJoinPoint pjp) throws Throwable { for (Object s : pjp.getArgs()) { //打印所有参数 System.out.println("around advice : " + s); } return pjp.proceed(); } }
Anmerkung:
package com.example.demo.aop.anno; import java.lang.annotation.*; /** * @author Fcb * @date 2020/6/20 * @description */ @Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD, ElementType.TYPE}) public @interface MyLog { }
Zielklasse:
package com.example.demo.aop.target; import com.example.demo.aop.anno.MyLog; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** * @author Fcb * @date 2020/6/20 * @description */ @RestController public class MockController { @RequestMapping("/hello") @MyLog public String helloAop(@RequestParam String key) { System.out.println("do something..."); return "hello world"; } }
Schließlich ist die Testklasse:
package com.example.demo.aop.target; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; /** * @author Fcb * @date 2020/6/20 * @description */ @SpringBootTest class MockControllerTest { @Autowired MockController mockController; @Test void helloAop() { mockController.helloAop("aop"); } }
Konsolenergebnis :
Um Rat: aop
Vor Rat: aop
tun Sie etwas...
Nach dem Rat: aop
Empfohlenes Tutorial: "Java-Tutorial》
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Spring AOP-Anmerkungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Im Jahr 2023 ist die KI-Technologie zu einem heißen Thema geworden und hat enorme Auswirkungen auf verschiedene Branchen, insbesondere im Programmierbereich. Die Bedeutung der KI-Technologie wird den Menschen zunehmend bewusst, und die Spring-Community bildet da keine Ausnahme. Mit der kontinuierlichen Weiterentwicklung der GenAI-Technologie (General Artificial Intelligence) ist es entscheidend und dringend geworden, die Erstellung von Anwendungen mit KI-Funktionen zu vereinfachen. Vor diesem Hintergrund entstand „SpringAI“ mit dem Ziel, den Prozess der Entwicklung von KI-Funktionsanwendungen zu vereinfachen, ihn einfach und intuitiv zu gestalten und unnötige Komplexität zu vermeiden. Durch „SpringAI“ können Entwickler einfacher Anwendungen mit KI-Funktionen erstellen, wodurch diese einfacher zu verwenden und zu bedienen sind.

Als Branchenführer bietet Spring+AI durch seine leistungsstarke, flexible API und erweiterte Funktionen führende Lösungen für verschiedene Branchen. In diesem Thema werden wir uns mit den Anwendungsbeispielen von Spring+AI in verschiedenen Bereichen befassen. Jeder Fall wird zeigen, wie Spring+AI spezifische Anforderungen erfüllt, Ziele erreicht und diese LESSONSLEARNED auf ein breiteres Anwendungsspektrum ausdehnt. Ich hoffe, dieses Thema kann Sie dazu inspirieren, die unendlichen Möglichkeiten von Spring+AI tiefer zu verstehen und zu nutzen. Das Spring-Framework hat eine mehr als 20-jährige Geschichte im Bereich der Softwareentwicklung, und seit der Veröffentlichung der Spring Boot 1.0-Version sind 10 Jahre vergangen. Nun kann niemand diesen Frühling bestreiten

So implementieren Sie programmgesteuerte Spring-Transaktionen: 1. Verwenden Sie TransactionCallback und TransactionCallbackWithoutResult; 4. Verwenden Sie TransactionTemplate in Kombination mit @Transactional;

Anmerkungen im JUnit-Framework werden zum Deklarieren und Konfigurieren von Testmethoden verwendet. Zu den Hauptanmerkungen gehören: @Test (Deklaration von Testmethoden), @Before (Methodenausführung, bevor die Testmethode ausgeführt wird), @After (Methodenausführung, nachdem die Testmethode ausgeführt wird). ausgeführt wird), @ BeforeClass (Methode, die ausgeführt wird, bevor alle Testmethoden ausgeführt werden), @AfterClass (Methode, die ausgeführt wird, nachdem alle Testmethoden ausgeführt werden). Diese Anmerkungen helfen dabei, den Testcode zu organisieren und zu vereinfachen und die Zuverlässigkeit des Testcodes zu verbessern durch die Bereitstellung klarer Absichten und Konfigurationen.

Einführung: PHPDoc ist ein Kommentarstandard für PHP-Code, der eine leicht verständliche und informative Dokumentation erstellt. Durch die Verwendung spezifischer Kommentar-Tags ermöglicht PHPDoc Entwicklern, wichtige Details zu Funktionen, Klassen, Methoden und anderen Codeelementen bereitzustellen. Dieser Leitfaden für Fortgeschrittene wirft einen detaillierten Blick auf PHPDoc, demonstriert seine Fähigkeiten und bietet effektive Dokumentationsstrategien. Syntax und Tags: PHPDoc-Kommentare beginnen mit doppelten Schrägstrichen (//) oder mehrzeiligen Kommentaren (/**/). Im Folgenden sind einige gängige Anmerkungs-Tags aufgeführt: @param: Definiert die Parameter einer Funktion oder Methode. @return: Gibt den Rückgabewert der Funktion oder Methode an. @throws: Beschreibt Ausnahmen, die von einer Funktion oder Methode ausgelöst werden können. @var: definiert die Attribute oder Instanzen der Klasse

So legen Sie die Transaktionsisolationsstufe in Spring fest: 1. Verwenden Sie die Annotation @Transactional. 3. Legen Sie sie in der Spring-Konfigurationsdatei fest. 4. Legen Sie sie in der Java-Konfigurationsklasse fest. Detaillierte Einführung: 1. Verwenden Sie die Annotation @Transactional, fügen Sie die Annotation @Transactional zu der Klasse oder Methode hinzu, die eine Transaktionsverwaltung erfordert, und legen Sie die Isolationsstufe im Attribut fest. 2. In der Spring-Konfigurationsdatei usw.

Anmerkungen in der Jackson-Bibliothek steuern die JSON-Serialisierung und -Deserialisierung: Serialisierung: @JsonIgnore: Ignorieren Sie die Eigenschaft @JsonProperty: Geben Sie den Namen an @JsonGetter: Verwenden Sie die get-Methode @JsonSetter: Verwenden Sie die set-Methode Deserialisierung: @JsonIgnoreProperties: Ignorieren Sie die Eigenschaft @ JsonProperty: Geben Sie den Namen @JsonCreator an: Verwenden Sie den Konstruktor @JsonDeserialize: Benutzerdefinierte Logik

Detaillierte Einführung in die Verwendung von MyBatis Annotation Dynamic SQL MyBatis ist ein Persistenzschicht-Framework, das uns praktische Persistenzoperationen bietet. In der tatsächlichen Entwicklung ist es normalerweise erforderlich, SQL-Anweisungen basierend auf den Geschäftsanforderungen dynamisch zu generieren, um flexible Datenoperationen zu erreichen. MyBatis Annotation Dynamic SQL wurde entwickelt, um diesen Anforderungen gerecht zu werden.
