我有两种使用@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();
}
Here是有效的完整工作示例。