Inhaltsverzeichnis
Aspektorientierte Programmierung
Die zugrunde liegenden Prinzipien von AOP werden implementiert.
Heim Java javaLernprogramm So verwenden Sie Spring AOP, um die Schnittstellenauthentifizierung in SpringBoot zu implementieren

So verwenden Sie Spring AOP, um die Schnittstellenauthentifizierung in SpringBoot zu implementieren

May 19, 2023 pm 06:13 PM
spring aop springboot

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

AOP-bezogene Begriffe

  • 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-Klasse
  • Implementierung der Schnittstellenauthentifizierung1 . YML-Datei konfigurieren

  • account:
      infos:
        - account: xinchao
          secret: admin
    Nach dem Login kopieren
  • 2. Konto- und Passwortkonfiguration lesen

    @Data
    public class SecretInfo {
        private String account;
        private String secret;
    }
    Nach dem Login kopieren
    4. 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
    @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

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ein neues Programmierparadigma, wenn Spring Boot auf OpenAI trifft Ein neues Programmierparadigma, wenn Spring Boot auf OpenAI trifft Feb 01, 2024 pm 09:18 PM

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.

Verwenden Sie Spring Boot und Spring AI, um generative Anwendungen für künstliche Intelligenz zu erstellen Verwenden Sie Spring Boot und Spring AI, um generative Anwendungen für künstliche Intelligenz zu erstellen Apr 28, 2024 am 11:46 AM

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

Was sind die Implementierungsmethoden für programmatische Frühlingstransaktionen? Was sind die Implementierungsmethoden für programmatische Frühlingstransaktionen? Jan 08, 2024 am 10:23 AM

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

Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Dec 29, 2023 am 11:02 AM

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

Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung Aug 15, 2023 pm 04:49 PM

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 im Frühjahr fest So legen Sie die Transaktionsisolationsstufe im Frühjahr fest Jan 26, 2024 pm 05:38 PM

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.

Anwendung des JUnit-Unit-Test-Frameworks in Spring-Projekten Anwendung des JUnit-Unit-Test-Frameworks in Spring-Projekten Apr 18, 2024 pm 04:54 PM

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.

Was sind die Frühlingsdesignmuster? Was sind die Frühlingsdesignmuster? Dec 29, 2023 pm 03:42 PM

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.

See all articles