Spring 3.1 Cache Abstraction without parameters

2019-03-26 05:46发布

reading about the new Cache Abstraction in Spring 3.1, I wanted to apply this feature to my project.

Can I cache the call to a method that has no parameters?

@Cacheable("xCache")
public List<X> loadAllX() {
    ...
}

The linked blog post states

a cache lookup is performed using as key the method parameters

so it should not be possible to cache this method, right?

Short answer: Yes, methods without any arguments will get cached just like any other methods. I guess there will be exactly one entry in the cache for that method.

1条回答
太酷不给撩
2楼-- · 2019-03-26 06:16

You can override this behavior by using "Cache SpEL available metadata" as described here:

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/cache.html#cache-spel-context

In your example, you could specify the following:

@Cacheable(value = "xCache", key = "#root.methodName") 
public List<X> loadAllX() { 
    ... 
} 

Which would cache the list of X in the "xCache" with key "loadAllX"

查看更多
登录 后发表回答