编程语言
首页 > 编程语言> > java – Spring分别列出列表中的所有元素

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)
}

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

解决方法:

再一次,这不是第一次提出这个问题.

> How to cache the list of entires based on its primary key using spring caching
> Spring Cache with collection of items/entities
> Putting all returned elements into a Spring-Boot cache using annotations
> What strategies exist for using Spring Cache on methods that take an array or collection parameter?

再一次,答案是一样的.

我怀疑任何一个链接都会有所帮助,但也许从#3开始.

干杯,
约翰

标签:java,caching,spring,spring-boot-2,spring-cache
来源: https://codeday.me/bug/20190701/1346744.html