2010-09-14 96 views
0

我想使用標記方法調用的結果作爲可緩存的註釋。提供時,它將使用緩存提供程序來緩存給定輸入的輸出。例如:我可以註釋一個方法在Spring中可緩存嗎?

@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,也執行了緩存,所以它似乎很適合這種用例。

這樣的功能是否存在?

回答

1

This module有你想要的。 (但它實際上是非常簡單的實現)

+0

完美,謝謝。 – Synesso 2010-09-14 11:18:07

相關問題