从Spring Boot Cacheable缓存中检索数据

4

我希望在服务类中实现两种方法。其中一种方法将以名字数组作为参数,检索所有对象并将对象存储到缓存中。

@Cacheable(value="HeaderConfig")
public List<HeaderConfig> getHeadeConfigByFieldNames(String[] fieldNames)
{
    List<HeaderConfig> hcList = new ArrayList<HeaderConfig>();
    for (String fieldName : fieldNames) {
        hcList.add(headerConfigRepository.getHeadeConfigByFieldName(fieldName));
    }
    return hcList;
}

另一种方法将名称作为参数,并且它应该从缓存记录中获取对象,这在先前的方法中已经完成。

@Cacheable(value="HeaderConfig" , key ="#fieldName")
 public HeaderConfig getHeadeConfigByFieldName(String fieldName)
{
    System.out.println("from database");
    HeaderConfig hc = null;
    // CODE TO BE IMPLEMENTED TO GET DATA FROM CACHE
    return hc;
}

请问有人能够建议如何在这里处理。我需要配置缓存管理器吗。


1
这不是“缓存”的工作方式,这只是一个常规的内存数据结构。您可以通过正常使用getter来使用@Cacheable,Spring会为您处理插入/检索缓存的操作。 - chrylis -cautiouslyoptimistic-
谢谢。所以在这里,我应该提供自己的纯Java代码实现。 - prity
1
只需从数据库中检索数据,假装缓存不存在即可。 - chrylis -cautiouslyoptimistic-
1个回答

2

不需要使用第一种方法。相反,可以在循环中调用第二种方法。Spring会自动处理缓存和检索。

只需确保在直接实现它的Bean的自动装配/Spring注入实例上调用第二种方法,而不是通过bean本身的某个方法调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接