我可以在Spring中将方法注释为可缓存吗?

时间:2010-09-14 10:56:37

标签: java spring caching aop

我想使用一个注释,将方法调用的结果标记为可缓存。提供时,它将使用缓存提供程序缓存给定输入的输出。例如:

@Cacheable
public Bar doExpensiveCalculation(Foo foo) {
    Bar bar = jiggeryPokeryWith(foo);
    return bar;
}

...

Foo foo1 = new Foo(...);
Foo foo2 = new Foo(...);

Bar bar1 = doExpensiveCalculation(foo1);
Bar bar2 = doExpensiveCalculation(foo2);
Bar bar3 = doExpensiveCalculation(foo1);
// no calculation done on previous line, cached result == bar1

在此示例的末尾,缓存将包含

{doExpensiveCalculation(foo1) -> bar1, 
 doExpensiveCalculation(foo2) -> bar2}

我确信这可以使用AOP。由于Spring同时执行AOP和缓存,因此它似乎很适合这种用例。

是否存在这样的功能?

2 个答案:

答案 0 :(得分:1)

This module有你想要的。 (但它实际上非常简单)

答案 1 :(得分:1)