Was tun, wenn der Redis -Cache im Spring -Boot fehlschlägt?
Serialisierungsprobleme und -lösungen, die bei der Verwendung von Redis zu OAuth2Authorisierungsobjekten in Spring -Boot -Anwendungen auftreten
In Spring -Boot -Anwendungen stoßen Sie bei der Kombination von OAuth2 -Autorisierungsserver (Version 3.1.0) und Redis für die Cache -Verwaltung häufig auf das Problem, dass OAuth2Authorisierungsobjekte nicht serialisieren können. In diesem Artikel wird die Ursachen des Problems analysiert und wirksame Lösungen bereitstellen.
Problembeschreibung:
Das Projekt stützt sich auf spring-boot-starter-oauth2-authorization-server
und verwendet RedisTemplate
, um Daten zu cache. RedisTemplate
verwendet Jackson als Serializer ( RedisSerializer.json()
). Nachdem das OAuth2Authorisierungsobjekt nachgeweiht wurde, kann es jedoch nicht deserialisiert werden. Die Hauptursache ist, dass der AuthorizationGrantType
-Klasse innerhalb des OAuth2Authorisierungsobjekts einen parameterlosen Konstruktor fehlt, wodurch Jackson nicht korrekt serialisiert und deserialisieren kann. Obwohl die Verwendung RedisSerializer.java()
das Serialisierungsproblem lösen kann, können die generierten binären Daten schlecht lesbar sind, was für das Debuggen nicht förderlich ist.
Lösung:
Um das Serialisierungsproblem zu lösen, das durch das Fehlen eines parameterlosen Konstruktors AuthorizationGrantType
-Klasse verursacht wird, können wir die Mixinfunktion von Jackson nutzen. Erstellen Sie eine Mixin -Klasse AuthorizationGrantTypeMixin
und fügen Sie einen mit @JsonCreator
kommentierten Konstruktor hinzu, der einen String -Parameter erhält, um die Deserialisierungsanforderungen von Jackson zu erfüllen.
Codebeispiel:
public abstract Class AuthorizationGrantTypixin { @JsonCreator public AuthorizationGrantTypemixin (@jsonProperty ("value") String -Wert) {} } ObjectMapper ObjectMapper = new ObjectMapper (); ObjectMapper.Addmixin (AuthorizationGrantType.Class, AuthorizationGrantTypemixin.Class); Redisserializer<object> serializer = new genericjackson2jsonRedisserializer (ObjectMapper); template.setDefaultSerializer (Serializer);</object>
Dieser Code definiert zunächst eine Mixin -Klasse AuthorizationGrantTypeMixin
, die einen benutzerdefinierten Konstruktor für die AuthorizationGrantType
-Klasse bietet. Erstellen Sie dann eine ObjectMapper
-Instanz und registrieren Sie AuthorizationGrantTypeMixin
als Mixin AuthorizationGrantType
-Klasse. Erstellen Sie schließlich einen GenericJackson2JsonRedisSerializer
mit einem benutzerdefinierten ObjectMapper
und setzen Sie ihn als Standard -Serializer für RedisTemplate
fest. Auf diese Weise kann das OAuth2Authorisierungsobjekt korrekt serialisiert und in Redis deserialisiert werden, während die Lesbarkeit von JSON -Daten beibehalten wird.
Das obige ist der detaillierte Inhalt vonWas tun, wenn der Redis -Cache im Spring -Boot fehlschlägt?. 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

Fehlerbehebung und Lösungen für die Sicherheitssoftware des Unternehmens, die dazu führt, dass einige Anwendungen nicht ordnungsgemäß funktionieren. Viele Unternehmen werden Sicherheitssoftware bereitstellen, um die interne Netzwerksicherheit zu gewährleisten. ...

VPROCESSERAZRABOTKIVEB-ENTLEGEN, мненеришшшо & лносsprechen, LeavallySumballanceFriablanceFaumdoptomatification, čtookazalovnetakprosto, Kakaožidal.Posenesko

Wie erkennt die Redis -Caching -Lösung die Anforderungen der Produktranking -Liste? Während des Entwicklungsprozesses müssen wir uns häufig mit den Anforderungen der Ranglisten befassen, z. B. das Anzeigen eines ...

Laravel 8 bietet die folgenden Optionen für die Leistungsoptimierung: Cache -Konfiguration: Verwenden Sie Redis, um Treiber, Cache -Fassaden, Cache -Ansichten und Seitenausschnitte zu Cache. Datenbankoptimierung: Stellen Sie die Indexierung fest, verwenden Sie den Abfrageumfang und verwenden Sie eloquente Beziehungen. JavaScript- und CSS -Optimierung: Verwenden Sie die Versionskontrolle, verschmelzen und verkleinern Sie die Vermögenswerte, verwenden Sie CDN. Codeoptimierung: Verwenden Sie das Installationspaket des Komponisten, verwenden Sie Laravel -Helferfunktionen und befolgen Sie die PSR -Standards. Überwachung und Analyse: Verwenden Sie Laravel Scout, verwenden Sie Teleskop, Monitor -Anwendungsmetriken.

JDBC ...

In Intellij ...

Die Optimierungslösung für Springboot-Timing-Aufgaben in einer Multi-Knoten-Umgebung ist die Entwicklung des Frühlings ...

Wie kann ich das Problem der Druckräume in Ideenkonsolenprotokollen lösen? Bei der Verwendung von Idee für die Entwicklung können viele Entwickler auf ein Problem stoßen: die Konsole gedruckt ...
