Springマネージドサービスの1つにSpringCacheを追加しようとしています。開発IDEとしてSTSを使用しています。
これが私がしたことです:
インストールされたspringcache1.3.1プラグイン
Config.groovyにキャッシュ構成を追加しました:
grails.spring.disable.aspectj.autoweaving = true springcache { enabled = true defaults { eternal = false diskPersistent = false } caches { tripCache { memoryStoreEvictionPolicy = "LRU" } } }
@Cacheable
次のように、サービスのテストメソッドの上にアノテーションを追加しました。int counter = 0 @Cacheable("testCache") String testInc(String x) { return (++counter).toString() }
今、私は次のようにコントローラーからこのメソッドを呼び出しています:
def testDashboard() { [data:testService.testInc("1")] }
そして、testInc()
常に新しい値を返します。つまり、連続した呼び出しは1、2、3などを返します。これにより、キャッシュが機能していないと思われます。何かを見逃して、キャッシュを適切にオンにしませんでしたか?
キャッシュがまったく機能しているかどうかを確認し、ehcache-2.4.6のソースコードをフックしてCachingAspectのinvokeCachedMethodにブレークポイントを設定しましたが、アプリを実行すると上記のメソッドが実行されないようです。
また、キャッシュ内の「1」の値を確認しようとしましたが、nullのように見えます。つまり、キー「1」がキャッシュに保存されていません。コントローラのテストメソッドに次の2行を追加しました。
Ehcache c = springcacheService.getOrCreateCache("testCache")
String x = c.get("1")
助けてください!