带有 Spring Boot 的咖啡因:如何缓存对象列表、使用 id 更新/删除对象并插入新对象以缓存

问题描述

我是 caffeine 和 Spring Boot 的新手。我正在尝试找到一种解决方案来缓存对象列表。 DB 事务需要 3 秒来加载列表,所以我希望使用 caffeine 缓存结果集。为了单独缓存每个项目,我遵循以下方法,但它似乎不起作用。

public List<Item> getAllItemsOnStartUp() {
            allItemsList = repo.getAllItems();
            for (Item item : allItemsList) {
                staticItem = item;
                getItem(item.getItmsId());
            }
        
        return allItemsList;
    }

    @CachePut(value = "allItems",key = "#itmsId")
    public Item getItem(BigInteger itmsId) {
        return item;
    }

@Override
@Cacheable(value = "allItems")
    public List<Item> getAllItems() {
        
        allItemsList = repo.getAllItems();
        return allItemsList;
    }

@Override
    @Transactional
    @CachePut(value = "allItems",key="#a0.itmsId")
    public Item insertItem(Item item) {
      Item savedItem = rRepo.save(item);
      return savedItem;
    }

服务器启动时,getAllItemsOnStartUp() 必须运行并填充缓存。应用调用 getAllItems() 来检索列表,预计会在此处使用缓存,但每次应用从 DB 获取数据时都需要 3 秒。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...