java – Spring分别列出列表中的所有元素

我正在尝试将缓存添加到CRUD应用程序,我开始做这样的事情:

@Cacheable("users")
List<User> list() {
    return userRepository.findAll()
}
@CachePut(value = "users", key = "#user.id") 
void create(User user) {
    userRepository.create(user)
}
@CachePut(value = "users", key = "#user.id") 
void update(User user) {
    userRepository.update(user)
}
@CacheEvict(value = "users", key = "#user.id") 
void delete(User user) {
    userRepository.delete(user)
}

我遇到的问题是我希望创建/更新/删除操作可以更新已经存储在缓存中的元素用于list()操作(注意list()不是从数据库而是从数据引擎中提取),但是我我无法做到.

我想单独缓存list()返回的所有元素,以便所有其他操作可以使用#user.id更新缓存.或者,也许,使所有操作更新已存储在缓存中的列表.

我读到我可以在更新时删除整个缓存,但我想避免类似的事情:

@CacheEvict(value = "users", allEntries=true) 
void create(User user) {
    userRepository.create(user)
}

有没有办法在缓存集合中创建/更新/删除值?或者将集合中的所有值缓存为单独的键?

最佳答案

转载注明原文:java – Spring分别列出列表中的所有元素 - 代码日志