Spring Cache属性提取

问题描述 投票:0回答:1

我有两种使用@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-boot caching hazelcast
1个回答
0
投票

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

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

Here是有效的完整工作示例。

© www.soinside.com 2019 - 2024. All rights reserved.