Error de conversión de tipo redis de caché de arranque de primavera
Recientemente, al utilizar la función Caché de Spring-boot, ocurrió un problema extraño.
El problema es como se muestra a continuación:
Un problema muy divertido, el También se producen errores de conversión del mismo tipo
El uso en el proyecto es el siguiente:
Configuración de caché
Uso de caché
Escenarios de uso de caché
p>Aislamos los errores anteriores
Algunas personas han encontrado este problema en Internet, pero dicen que es un problema con la herramienta spring-boot devtools, lo que parece bastante ridículo. No he usado esta herramienta devtools, pero del análisis en línea puedo sacar aproximadamente las siguientes conclusiones:
Cuando el caché coloca datos en el caché, se usa el método de serialización predeterminado (JdkSerializationRedisSerializer). usos de serialización El ClassLoader de contexto del objeto se guarda en binario y, debido a que las herramientas de desarrollo hacen que el servicio se reinicie, el ClassLoad y el ClassLoader original no son el mismo objeto después del reinicio, por lo que la clase del objeto también es diferente. ambos parecen Usuario, son de diferente tipo, porque su Clase tampoco es igual.
Esto es demasiado ridículo. Puse los datos en el caché, luego reinicié el servidor y luego revisé el caché y no se pudo usar. Entonces, ¿de qué sirve este caché?
Solución
Este problema definitivamente está relacionado con la serialización. Especificamos el método de serialización del valor de caché y usamos json para serializar el objeto. La transformación de la clase de configuración es la siguiente: <. /p>
Reinicie el servicio y el objeto deserializado leído del caché se podrá utilizar normalmente.
¡Listo! ! !