Spring MVC - Ehcache最佳实践

时间:2015-02-18 08:41:31

标签: java spring ehcache

我有一个关于使用spring和ehCache的最佳实践的问题。

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

@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将为两个方法返回相同的值,因为它们具有相同的键。 我使用了键和方法名对ehcache进行了索引,因此,如果两个方法具有相同的#key(在我的示例中为10),它将查看方法名称。

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

如何解决这个问题?

谢谢。

1 个答案:

答案 0 :(得分:4)

根据@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 }