Concepto de caché de primavera
Comenzando con Spring 3.1, se proporciona una forma transparente de agregar caché a las aplicaciones de primavera existentes, que se utiliza como @Transaction. Hay una capa de abstracción entre el nivel de aplicación y el almacenamiento de backend. Esta capa de abstracción está diseñada para encapsular varios almacenamiento de backend conectable (Ehcache Guava Redis) para minimizar la intrusión causada por el caché al código comercial existente.
La tecnología de almacenamiento en caché de Spring también tiene una flexibilidad considerable. No solo puede usar Spel (lenguaje de expresión de Spring) para definir las claves de caché y varias condiciones, sino que también proporciona soluciones de almacenamiento temporales de caché listas para usar, y también admite la integración con cachés profesionales convencionales como Ehcache.
Sus características se resumen de la siguiente manera:
Concepto de diseño
Al igual que otros servicios del marco de primavera, Spring Cache primero proporciona una capa de abstracción, y la abstracción del núcleo se refleja principalmente en las dos interfaces.
org.springframework.cache.cache
org.springframework.cache.CacheManager
Cache significa caché en sí
Cachemanager representa el procesamiento y la gestión de los cachés, etc. El significado de la abstracción es bloquear las diferencias en los detalles de implementación y proporcionar escalabilidad. Esta capa de abstracción de caché desacopla el uso de caché y el almacenamiento de caché de fondo, de modo que el almacenamiento de fondo se puede reemplazar fácilmente en el futuro.
Usando el caché de primavera en tres pasos:
Declarar caché
@Cachable ("Libros") Libro público Findbook (ISBN ISBN) {...} El uso es muy simple. Agregue @Cachable y otras anotaciones al método para almacenar en caché el resultado del método.
Cuando se llama a un método, primero verifique si hay alguna llamada al mismo parámetro en el caché para el método. Si es así, consulte desde el caché y devuelva el resultado. De lo contrario, ejecute la lógica del método específico y almacene en caché el resultado en caché. Por supuesto, esta serie de lógica es transparente para la persona que llama. Las notas para otras operaciones de caché son las siguientes (consulte la documentación oficial para más detalles):
Encienda el soporte de caché de primavera
<Cache: impulsado por anotación />
O use el método de anotación @enablecaching
Configurar el almacenamiento de backend de caché
Spring Cache proporciona varias implementaciones de almacenamiento de backend integradas: las siguientes son las implementaciones específicas de Cachemanager.
Además, Spring Data proporciona dos administradores de caché:
Si usa cachés distribuidos como Memcached o Redis, puede implementar Cache y Cachemanager usted mismo y declararlo en el contexto. Si se requieren múltiples implementaciones de caché diferentes, se pueden encapsularse varios caché en forma de combinación.
¿Cómo se genera la llave en caché?
Todos sabemos que el método de almacenamiento de caché es generalmente el valor clave. Entonces, en el caché de primavera, ¿cómo se establece la llave? Aquí necesitamos introducir keyGenerator, que es responsable de la estrategia de generación de claves, y el valor predeterminado es usar SimpleKeyGenerator
Se puede ver que es el valor hash de la matriz de parámetros ordenado. Por supuesto, los usuarios pueden personalizar la estrategia de generación de claves.
Implementación de Spring Cache
Lo anterior es el uso general de Spring Cache, que muestra cómo se implementa Spring.
Al aprender el código fuente de primavera, hay dos cosas para recordar:
Recuerde estos y es más fácil comprender el mecanismo de implementación y tiempo de ejecución de algunos componentes en la primavera.
Spring Cache no es una excepción. Es una implementación típica de Spring AOP. En la primavera, AOP se puede entender simplemente como un proxy (excepto SuppectJ). Declaramos que la clase de método @cachable se representará, y en el proxy, se implementan operaciones de consulta y configuración en caché.
Creación de infraestructura de caché
El artículo anterior (descripción general del módulo Spring AOP) habló sobre el hecho de que el proceso de creación de Spring AOP es esencialmente implementar un Posteo de Post Bean, crear un proxy en el proceso de crear un Bean y vincular a todos los asesores aplicables al Bean para el proxy y, en última instancia, exponerlo al contenedor.
Varios conceptos clave de AOP Master en Spring Advisor Advice Pointcut
consejo = comportamiento de la inserción en la intercepción de la sección
PointCut = PointCut a la sección
asesor = consejo + punto
Spring Cache también tiene procesos similares que otros AOPS
Crear un proxy de caché
Línea de intercepción de caché
El objeto de proxy de caché generado en Spring Cache usa la clase CacheproxyFactoryBean Factory. En términos generales, la creación de proxy estándar en primavera se basa en proxyFactoryBean. Aquí, para manejar más convenientemente la lógica de caché, Spring presenta CacheproxyFactoryBean para representar específicamente el proxy relacionado con el caché. Cache proxy puede envolver objetos de destino singleton y proxy todas las interfaces implementadas por los objetos de destino.
Como puede ver, en CacheProxyFactoryBean, una propiedad importante es Cacheinterceptor. Esta clase es una clase de implementación de MethodInterceptor. La responsabilidad de esta clase es realizar operaciones específicas de caché en el método de destino del objeto de destino, que es responsabilidad del consejo mencionado anteriormente.
Continuar siguiendo, el método de ejecución de retorno es el método en la clase principal Cacheaspectsupport
En este método, finalmente encontramos la lógica final del caché de operaciones
Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.