我想在服务类中实现两个方法。 一种方法将以名称数组作为参数,检索其所有对象并将对象存储到缓存中。
@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;
}
请任何人建议如何在这里处理。我需要配置任何缓存管理器吗?
最佳答案
不需要第一种方法。相反,可以在循环中调用第二个方法。 Spring 将自动处理缓存和检索。
只需确保在 Bean 的 Autowiring /Spring 注入(inject)实例上调用第二个方法,在该实例中直接实现第二个方法,而不是通过 bean 本身中的某些方法来调用。
关于java - Spring boot Cacheable中从缓存中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57296055/