


So verwenden Sie Spring AOP, um die Schnittstellenauthentifizierung in SpringBoot zu implementieren
Aspektorientierte Programmierung
Aspektorientierte Programmierung kann Logik extrahieren, die nichts mit dem Geschäft zu tun hat, sondern von verschiedenen Geschäftsmodulen gemeinsam aufgerufen werden muss, und sie in Form von Aspekten in den Code schneiden, wodurch die Kopplung reduziert wird den Code im System und reduzieren doppelten Code.
Spring AOP implementiert aspektorientierte Programmierung durch Vorkompilierung und dynamische Proxys zur Laufzeit.
Die zugrunde liegenden Prinzipien von AOP werden implementiert.
Die unterste Ebene von AOP verwendet dynamische Proxys, um Anforderungen zu erfüllen und Proxy-Klassen für Klassen zu generieren, die hinzugefügt werden müssen Erweiterte Funktionen. Es gibt zwei Möglichkeiten, Proxy-Klassen zu generieren (d. h. die Klasse, die erweitert werden muss):
- implementiert die Schnittstelle und verwendet den dynamischen JDK-Proxy, die generierte Proxy-Klasse verwendet seine Schnittstelle und implementiert die Schnittstelle nicht.
- Mit dem dynamischen CGlib-Proxy integriert die generierte Proxy-Klasse die Proxy-Klasse
Verbindungspunkte: Methoden im Proxy ( erweiterte) Klasse
-
Einstiegspunkt: Die Methode, die tatsächlich verbessert werden muss
Benachrichtigung: Der Logikcode, der erweitert werden soll
Vorabbenachrichtigung: Vor der Hauptfunktion ausgeführt wird ausgeführt
Post-Benachrichtigung: Ausgeführt nach der Ausführung der Theme-Funktion
Surround-Benachrichtigung: Ausgeführt vor und nach der Ausführung der Hauptfunktion
Ausnahmebenachrichtigung: Ausgeführt, wann Bei der Ausführung der Designfunktion tritt eine Ausnahme auf.
Abschließende Benachrichtigung: Betreff. Die Funktion wird unabhängig davon ausgeführt, ob sie erfolgreich ausgeführt wurde.
-
Aspekt: Die Kombination aus Pointcut und Aspekt. Das heißt, die erweiterte Methode und die erweiterte Funktion bilden den Aspekt. Verwandte Kommentare und Pointcut-Ausdrücke ?
@Nachher: Entspricht der endgültigen Benachrichtigung
@Pointcut: Deklarieren Sie den Pointcut, markiert in a. Methoden können Ausdrücke prägnanter machen
Verwenden Sie Pointcut-Ausdrücke, um Pointcuts zu deklarieren
execution([Berechtigungsmodifikator][return Typ][vollständiger Klassenpfad].[Methodenname][Parameterlistentyp])
Ausführung(* com.xxx.ABC.add()), Erweiterung der Methode der ABC-KlasseImplementierung der Schnittstellenauthentifizierung1 . YML-Datei konfigurieren
- 2. Konto- und Passwortkonfiguration lesen4. Schreiben Sie zunächst eine Anmerkung zur Identifizierung dass eine Authentifizierung nicht erforderlich ist. Später können wir dieses Token zur Authentifizierung übergeben, wenn wir andere Schnittstellen anpassen. Der übergebene Ort ist das Captcha-Feld
@Data public class SecretInfo { private String account; private String secret; }
Nach dem Login kopieren@Configuration @ConfigurationProperties("account") public class SecretConfig { private List<SecretInfo> infos; private Map<String, SecretInfo> map; private Map<String, TokenInfo> tokenMap = new HashMap<>(); public void setInfos(List<SecretInfo> infos) { this.infos = infos; map = infos.stream().collect(Collectors.toMap(SecretInfo::getAccount, Function.identity())); } public synchronized String getToken(String account, String secret) { SecretInfo info = map.get(account); if (info == null) { throw new BusinessException("无效账号"); } if (!StringUtils.equals(info.getSecret(), secret)) { throw new BusinessException("无效密码"); } TokenInfo tokenInfo = tokenMap.get(account); if (tokenInfo != null && tokenInfo.getToken() != null) { return tokenInfo.getToken(); } tokenInfo = new TokenInfo(); String uuid = UUID.randomUUID().toString(); tokenInfo.setToken(uuid); tokenInfo.setCreateDate(LocalDateTime.now()); tokenInfo.setExpireDate(LocalDateTime.now().plusHours(2)); tokenMap.put(account,tokenInfo); return tokenInfo.getToken(); } public boolean checkCaptcha(String captcha) { return tokenMap.values().stream().anyMatch(e->StringUtils.equals(e.getToken(),captcha)); } }
Nach dem Login kopieren
account: infos: - account: xinchao secret: admin
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Spring AOP, um die Schnittstellenauthentifizierung in SpringBoot zu implementieren. 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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

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;

SpringBoot und SpringMVC sind beide häufig verwendete Frameworks in der Java-Entwicklung, es gibt jedoch einige offensichtliche Unterschiede zwischen ihnen. In diesem Artikel werden die Funktionen und Verwendungsmöglichkeiten dieser beiden Frameworks untersucht und ihre Unterschiede verglichen. Lassen Sie uns zunächst etwas über SpringBoot lernen. SpringBoot wurde vom Pivotal-Team entwickelt, um die Erstellung und Bereitstellung von Anwendungen auf Basis des Spring-Frameworks zu vereinfachen. Es bietet eine schnelle und einfache Möglichkeit, eigenständige, ausführbare Dateien zu erstellen

In diesem Artikel wird ein detailliertes Beispiel geschrieben, um über die tatsächliche Entwicklung von Dubbo + Nacos + Spring Boot zu sprechen. In diesem Artikel wird nicht zu viel theoretisches Wissen behandelt, sondern das einfachste Beispiel wird geschrieben, um zu veranschaulichen, wie Dubbo in Nacos integriert werden kann, um schnell eine Entwicklungsumgebung aufzubauen.

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.

JUnit ist ein weit verbreitetes Java-Unit-Test-Framework in Spring-Projekten und kann mit den folgenden Schritten angewendet werden: JUnit-Abhängigkeit hinzufügen: org.junit.jupiterjunit-jupiter5.8.1test Testfälle schreiben: Verwenden Sie @ExtendWith(SpringExtension.class), um die Erweiterung zu aktivieren. Verwenden Sie @Autowired-Inject-Beans, verwenden Sie @BeforeEach und @AfterEach zum Vorbereiten und Bereinigen und markieren Sie Testmethoden mit @Test.

Zu den Frühlingsentwurfsmustern gehören: 1. Abhängigkeitsinjektion und Kontrollinversion; 3. Vorlagenmuster; 6. Strategiemuster und Adaptermuster; Ausführliche Einführung: 1. Abhängigkeitsinjektion und Kontrollumkehr: Diese beiden Entwurfsmuster bilden den Kern des Spring-Frameworks. Durch die Abhängigkeitsinjektion ist Spring für die Verwaltung und Injektion von Abhängigkeiten zwischen Komponenten verantwortlich, wodurch die Kopplung zwischen Komponenten verringert wird. Die Umkehrung der Kontrolle bezieht sich auf die Übergabe der Objekterstellung und des Abhängigkeitsmanagements an den Spring-Container usw.
