es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obtener elementos separados con @Cacheable List.

Estoy utilizando la integración de caché de Spring con Hazelcast.

Necesito obtener/establecer (en la primera llamada) la lista completa de películas desde/hacia un mapa de caché de Hazelcast.
También necesito poder obtener una película específica del mapa de caché.

Mi problema es que al usar Listcon @Cacheable, devuelve una única clave (SimpleKey[]) que contiene todos los objetos de las películas, en lugar de agregar las clave/valores individualmente, para poder luego utilizar @Cacheable con una clave para obtener un objeto de mapa específico.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para establecer/obtener la lista de todas las películas desde/hacia un mapa de caché de Hazelcast, puedes modificar el método getAllMoviesFromCache() para usar una clave de caché personalizada en lugar de la clave predeterminada SimpleKey[]. Esto se puede lograr creando una clase de clave personalizada que contenga el nombre de la caché y la operación que se está realizando (obtener todas las películas). El método modificado se vería así:

    @Cacheable(value = MOVIES_CACHE_NAME, key = "{T(customcache.keys.CacheKeys).ALL_MOVIES_KEY}")
    public List<movie> getAllMoviesFromCache() {
        // código existente
    }
    

    De manera similar, para obtener una película específica del mapa de caché, puedes modificar el método getMovieDetailsFromCache() para usar una clave de caché personalizada que incluya el ID de la película. El método modificado se vería así:

    @Cacheable(value = MOVIES_CACHE_NAME, key = "{#movieId}")
    public Movie getMovieDetailsFromCache(String movieId) {
        // código existente
    }
    

    Ten en cuenta que la clave de caché para el método getMovieDetailsFromCache() es {#movieId}, que es equivalente a new SimpleKey(movieId). Esto crea una clave específica para el ID de la película y se utiliza para almacenar y recuperar el objeto de la película del mapa de caché.

Comments are closed.