Rumah Java javaTutorial Apa yang perlu dilakukan jika cache redis gagal dalam boot musim bunga?

Apa yang perlu dilakukan jika cache redis gagal dalam boot musim bunga?

Apr 19, 2025 pm 08:03 PM
redis Penyelesaian spring security red

Apa yang perlu saya lakukan jika cache redis objek oAuth2Authorization gagal dalam boot musim bunga?

Masalah Serialization dan penyelesaian yang dihadapi semasa menggunakan objek Redis ke Cache OAuth2Authorization dalam aplikasi boot musim bunga

Dalam aplikasi Boot Spring, apabila menggabungkan Server Kebenaran OAuth2 Spring Security (versi 3.1.0) dan redis untuk pengurusan cache, anda sering menghadapi masalah gagal untuk bersiri objek OAuth2uthorization ke Redis. Artikel ini akan menganalisis punca masalah dan menyediakan penyelesaian yang berkesan.

Penerangan Masalah:

Projek ini bergantung pada spring-boot-starter-oauth2-authorization-server dan menggunakan RedisTemplate ke data cache. RedisTemplate menggunakan Jackson sebagai Serializer ( RedisSerializer.json() ). Walau bagaimanapun, selepas cache objek OAuth2Authorization kepada Redis, ia tidak boleh deserialized. Sebab akar adalah bahawa kelas AuthorizationGrantType di dalam objek oAuth2Authorization tidak mempunyai pembina parameterless, yang menyebabkan Jackson gagal untuk bersiri dan deserialize dengan betul. Walaupun menggunakan RedisSerializer.java() dapat menyelesaikan masalah bersiri, data binari yang dihasilkan tidak dapat dibaca dengan baik, yang tidak kondusif untuk debugging.

Penyelesaian:

Untuk menyelesaikan masalah serialisasi yang disebabkan oleh kekurangan pembina parameter AuthorizationGrantType kelas, kita boleh memanfaatkan fungsi Mixin Jackson. Buat kuasa mixin AuthorizationGrantTypeMixin dan tambahkan pembina yang dijelaskan dengan @JsonCreator , yang menerima parameter rentetan untuk memenuhi keperluan deserialization Jackson.

Contoh kod:

 Public Abstract Class AuthorizationGrantTyPemixin {
    @Jsoncreator
    Kebenaran AwamGrantTyPemixin (@jsonProperty ("nilai") nilai rentetan) {}
}

ObjectMapper ObjectMapper = New ObjectMapper ();
objectMapper.addmixin (kebenaranGrantType.class, kebenarangranttypemixin.class);

Redisserializer<object> Serializer = new Genericjackson2jsonRedisserializer (ObjectMapper);
template.setDefaultSerializer (Serializer);</object>
Salin selepas log masuk

Kod ini mula -mula mentakrifkan kelas Mixin AuthorizationGrantTypeMixin , menyediakan pembina tersuai untuk kelas AuthorizationGrantType . Kemudian, buat contoh ObjectMapper dan daftarkan AuthorizationGrantTypeMixin sebagai mixin dari kelas AuthorizationGrantType . Akhirnya, buat GenericJackson2JsonRedisSerializer menggunakan ObjectMapper tersuai dan tetapkannya sebagai serializer lalai untuk RedisTemplate . Dengan cara ini, objek OAuth2Authorization boleh disiarkan dengan betul dan deserialized ke dalam REDIS, sambil mengekalkan pembacaan data JSON.

Atas ialah kandungan terperinci Apa yang perlu dilakukan jika cache redis gagal dalam boot musim bunga?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Adakah perisian keselamatan syarikat menyebabkan aplikasi gagal dijalankan? Bagaimana cara menyelesaikan masalah dan menyelesaikannya? Adakah perisian keselamatan syarikat menyebabkan aplikasi gagal dijalankan? Bagaimana cara menyelesaikan masalah dan menyelesaikannya? Apr 19, 2025 pm 04:51 PM

Penyelesaian masalah dan penyelesaian kepada perisian keselamatan syarikat yang menyebabkan beberapa aplikasi tidak berfungsi dengan baik. Banyak syarikat akan menggunakan perisian keselamatan untuk memastikan keselamatan rangkaian dalaman. …

Menggunakan DICR/YII2-Google untuk mengintegrasikan API Google di YII2 Menggunakan DICR/YII2-Google untuk mengintegrasikan API Google di YII2 Apr 18, 2025 am 11:54 AM

VProcesserAzrabotKiveB-disengajakan, мнепришосоаookaнноаяадачейтераце hadapan LeavallysumballanceFriablanceFaumdoptomification, čtookazalovnetakprosto, Kakaožidal.posenesko

Bagaimana menggunakan penyelesaian cache Redis untuk merealisasikan keperluan senarai kedudukan produk dengan cekap? Bagaimana menggunakan penyelesaian cache Redis untuk merealisasikan keperluan senarai kedudukan produk dengan cekap? Apr 19, 2025 pm 11:36 PM

Bagaimanakah penyelesaian caching Redis menyedari keperluan senarai kedudukan produk? Semasa proses pembangunan, kita sering perlu menangani keperluan kedudukan, seperti memaparkan ...

Titik pengoptimuman Laravel8 Titik pengoptimuman Laravel8 Apr 18, 2025 pm 12:24 PM

Laravel 8 menyediakan pilihan berikut untuk Pengoptimuman Prestasi: Konfigurasi Cache: Gunakan Redis ke Pemacu Cache, Fasad Cache, Pandangan Cache, dan Page Page. Pengoptimuman pangkalan data: Menetapkan pengindeksan, gunakan skop pertanyaan, dan gunakan hubungan fasih. Pengoptimuman JavaScript dan CSS: Gunakan Kawalan Versi, Gabungan dan Secrink Aset, Gunakan CDN. Pengoptimuman kod: Gunakan pakej pemasangan komposer, gunakan fungsi pembantu Laravel, dan ikuti piawaian PSR. Pemantauan dan Analisis: Gunakan Pengakap Laravel, gunakan teleskop, memantau metrik aplikasi.

Dalam persekitaran multi-nod, bagaimana untuk memastikan bahawa tugas masa @scheduled Spring Boot hanya dilaksanakan pada satu nod? Dalam persekitaran multi-nod, bagaimana untuk memastikan bahawa tugas masa @scheduled Spring Boot hanya dilaksanakan pada satu nod? Apr 19, 2025 pm 10:57 PM

Penyelesaian pengoptimuman untuk tugas masa springboot dalam persekitaran pelbagai nod sedang membangunkan musim bunga ...

Bagaimana menyelesaikan masalah percetakan ruang dalam log konsol idea? Bagaimana menyelesaikan masalah percetakan ruang dalam log konsol idea? Apr 19, 2025 pm 09:57 PM

Bagaimana menyelesaikan masalah percetakan ruang dalam log konsol idea? Apabila menggunakan idea untuk pembangunan, banyak pemaju mungkin menghadapi masalah: konsol dicetak ...

See all articles