¿Qué es Spring Cache y para qué sirve? Entérate aquí

| Última modificación: 16 de octubre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Durante el desarrollo de aplicaciones, suele ocurrir que algunas operaciones se repiten constantemente y esto genera una carga innecesaria en la base de datos o en otros recursos. Spring Cache es una solución con la que puedes ahorrar gran cantidad de tiempo y recursos, porque evita que se hagan las mismas consultas una y otra vez. ¿Cómo lo hace? Te lo explico en este post.

qué es Spring Cache

¿Qué es Spring Cache?

Spring Cache es una herramienta de Spring Framework que te ayuda a guardar en memoria los resultados de ciertos métodos que se ejecutan con frecuencia, evitando que tengas que recalcular o hacer consultas a la base de datos cada vez que los necesitas.

Esto quiere decir que, cuando tienes una función que siempre devuelve los mismos datos, como una tabla de configuraciones o una lista de parámetros, puedes usar Spring Cache para no consultarla constantemente y para almacenar esos resultados de forma temporal.

Para activarlo simplemente debes usar la anotación @Cacheable, y ya con eso integras la caché en tu aplicación sin necesidad de hacer grandes cambios en tu código.

¿Para qué sirve Spring Cache?

Te sirve para optimizar el rendimiento de tus aplicaciones, sobre todo en aquellas situaciones donde se realizan operaciones repetitivas que no cambian con frecuencia. Estas son algunas ventajas clave de usar Spring Cache:

  1. Reducir las consultas a la base de datos: Si un servicio o método siempre devuelve los mismos datos (por ejemplo, datos estáticos como configuraciones), es innecesario realizar la misma consulta a la base de datos cada vez. Al almacenar los resultados en la caché, reduces la carga en la base de datos.
  2. Mejorar el rendimiento: Al evitar consultas o cálculos repetitivos, tu aplicación puede responder más rápido, especialmente en sistemas donde el tiempo de respuesta es crucial.
  3. Aliviar la carga del servidor: Cuando varias solicitudes acceden al mismo recurso o información, la caché ayuda a reducir el trabajo del servidor al devolver los datos almacenados en memoria en lugar de recalcular o volver a consultar los datos.
  4. Ahorro de recursos: El uso de Spring Cache no solo disminuye el tiempo de procesamiento, sino que también ayuda a disminuir el consumo de recursos, como el uso del CPU y la memoria, ya que las tareas repetitivas son minimizadas.

Cómo funciona Spring Cache

Resulta que cuando anotas un método con @Cacheable, lo que hace Spring de forma automática es guardar el resultado de ese método en la caché después de la primera ejecución.

Cuando ocurren las otras llamadas al método, Spring recupera el resultado desde la caché en vez de ejecutar el código otra vez, esto lo hace si los parámetros son los mismos.

Lo puedes implementar de esta manera:

@Service
public class MiServicio {

@Cacheable("miCache")
public String obtenerDatos() {
// Simulamos una consulta a base de datos o cálculo complejo
return "Datos que se repiten";
}
}

Si observas bien, la primera vez que llamas a obtenerDatos(), el valor se guarda en la caché “miCache”. Pero, si vuelves a llamar al método con los mismos parámetros, el resultado se recupera directamente de la caché en lugar de ejecutar el método de nuevo.

Ejemplo práctico de Spring Cache

Estás desarrollando una aplicación que consulta información de productos desde una base de datos. Tienes un método que devuelve una lista de productos en función de su categoría. Para que esos resultados se guarden en la caché y no tengas que hacer la misma consulta una y otra vez, usas Spring Cache:

@Service
public class ProductoServicio {

@Cacheable("productosPorCategoria")
public List<Producto> obtenerProductosPorCategoria(String categoria) {
// Simulamos una consulta a base de datos
return productoRepository.findByCategoria(categoria);
}
}

Puedes ver que el método obtenerProductosPorCategoria guarda el resultado en la caché. Cuando vuelves a pedir la lista de productos de la misma categoría, el resultado se devolverá desde la memoria y no consultará la base de datos.

Configuración de Spring Cache

Para configurarlo correctamente debes asegurarte de tener las dependencias necesarias en tu proyecto, como las de spring-context y spring-cache en tu archivo pom.xml si usas Maven:

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.10</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-cache</artifactId>
<version>5.3.10</version>
</dependency>

Luego, habilita la caché en tu aplicación agregando la anotación @EnableCaching en una clase de configuración:

@Configuration
@EnableCaching
public class ConfiguracionCache {
}

Así es como Spring sabe que debe gestionar las anotaciones de caché en tu proyecto. A partir de ahí, ya puedes usar la anotación @Cacheable en los métodos que quieras optimizar.

Fácilmente puedes dominar frameworks como Spring y convertirte en un experto en desarrollo backend si te unes a nuestro Bootcamp de Java Full Stack en KeepCoding. Aquí no solo aprenderás a implementar cachés y optimizar tus aplicaciones, sino que también adquirirás las habilidades que te abrirán las puertas al sector IT. Este es un sector en crecimiento, con una gran demanda de profesionales y excelentes oportunidades de estabilidad laboral y sueldos competitivos. ¡Apúntate y transforma tu futuro hoy mismo!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Java y Spring Boot

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado