如何使用 spring 缓存根据主键缓存整个列表
How to cache the list of entires based on its primary key using spring caching
我想缓存存储库 class 的响应,它有以下方法:
@Cacheable(cacheNames = "books", key="#id")
Book findById(Long Id);
@CacheEvict(cacheNames = "books", key = "#id")
void deleteById(Long id);
@Cacheable(cacheNames = "books", key="#book.id")
Book save(Book book);
@Cacheable("books")
List<Book> findAll();
除了 findAll() 方法外,其他方法都按预期工作。
如何使 findAll() 使用 book.id[=22 填充 books 缓存=]作为键?
您需要为您的缓存提供程序(例如 Ehcache、Redis 或 Hazelcast)提供自定义的 CacheManager
and Cache
实现。
默认情况下,OOTB,Spring 的缓存抽象 不会将缓存的方法 array/collection 类型 return 值拆分为单独的条目在目标缓存中。你必须自己处理。
查看我对此 nearly identical question 的最后回复。
我想缓存存储库 class 的响应,它有以下方法:
@Cacheable(cacheNames = "books", key="#id")
Book findById(Long Id);
@CacheEvict(cacheNames = "books", key = "#id")
void deleteById(Long id);
@Cacheable(cacheNames = "books", key="#book.id")
Book save(Book book);
@Cacheable("books")
List<Book> findAll();
除了 findAll() 方法外,其他方法都按预期工作。
如何使 findAll() 使用 book.id[=22 填充 books 缓存=]作为键?
您需要为您的缓存提供程序(例如 Ehcache、Redis 或 Hazelcast)提供自定义的 CacheManager
and Cache
实现。
默认情况下,OOTB,Spring 的缓存抽象 不会将缓存的方法 array/collection 类型 return 值拆分为单独的条目在目标缓存中。你必须自己处理。
查看我对此 nearly identical question 的最后回复。