我想使用一个注释,将方法调用的结果标记为可缓存。如果提供,它将使用缓存提供程序来缓存给定输入的输出。例如:
@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和缓存,因此似乎很适合该用例。
是否存在这样的功能?
最佳答案
This module有您想要的。 (但实际上很容易实现)