首页 > 解决方案 > 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 作为缓存提供程序。

标签: spring-bootcachinghazelcast

解决方案


如果要在两种方法之间共享缓存,我认为您应该执行以下操作:

@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();
} 

是有效的完整工作示例。


推荐阅读