Spring MVC - Ehcache 最佳实践

Spring MVC - Ehcache best practices

我对使用 spring 和 ehCache 的最佳实践有疑问。

例如,如果我有两个使用相同参数值的 @Cacheable 注释的方法,ehcache 将 return 最新的缓存值。

@Cacheable(value="imagesCache",key="#id_image")
public Image getUserImage(id_image){ //stuff }

//and 

@Cacheable(value="imagesCache",key="#id_image")
public Image getProductImage(id_image){ //stuff }

如果我先调用 getUserImage(10) 然后调用 getProductImage(10),ehcache 将 return 相同的值两种方法,因为它们具有相同的密钥。 我认为 ehcache 使用 键和方法名称 索引缓存值,因此如果两个方法具有相同的#key(在我的示例中为 10),它将查看方法名称。

我知道最简单的解决方案是创建两个缓存("userImagesCache" 和 "productImagesCache"),但在这种情况下我想避免这种情况。

如何解决?

谢谢。

根据 @Cacheable javadoc key 是一个 SpEL 表达式,所以你可以这样写:

@Cacheable(value="imagesCache",key="'user' + #id_image")
public Image getUserImage(id_image){ //stuff }

//and 

@Cacheable(value="imagesCache",key="'product' + #id_image")
public Image getProductImage(id_image){ //stuff }