spring-boot - Spring Cache 属性提取
问题描述
我有两种使用@Cacheable 注释的方法。
@Cacheable(value = "product", key = "#id")
public Product getProduct(String id) {
Product product = productRepository.getProductById(id)
return product;
}
第二种方法是,
@Cacheable(value = "product", key="#id")
public Integer getProductType(String id) {
return getProduct(id).getProductType();
}
第二种方法不起作用。如何从“产品”缓存中仅提取属性?在这种情况下,已经缓存了该特定 ID 的产品。我只需要缓存中的属性。我使用 Hazelcast 作为缓存提供程序。
解决方案
如果要在两种方法之间共享缓存,我认为您应该执行以下操作:
@Resource
private Service self;
@Cacheable(value = "product", key = "#id")
public Product getProduct(String id) {
Product product = productRepository.getProductById(id)
return product;
}
public Integer getProductType(String id) {
return self.getProduct(id).getProductType();
}
这是有效的完整工作示例。
推荐阅读
- javascript - Lerna bootstrap 不链接本地依赖项?
- arrays - 使用索引和数组创建带有函数的数组?
- powerbi - 按周和月聚合的销售数据的自定义日历
- git - Git rebase 跳过相同的提交
- jsf - 如何使用 JSF 和 Java 下载 excel 文件
- automation - 如何获取 DM 中打开文件的路径?
- c# - 将 bool 插入 SQL 数据库,c#
- jmeter - JMeter :: 用于将测试数据与用户 ID 映射的参数化查询
- docker - 如何为分子内部剧本任务设置 no_log: true?
- xcode - Cloud Firestore 不仅适用于 iOS | 扑