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