0

Springマネージドサービスの1つにSpringCacheを追加しようとしています。開発IDEとしてSTSを使用しています。

これが私がしたことです:

  1. インストールされたspringcache1.3.1プラグイン

  2. Config.groovyにキャッシュ構成を追加しました:

    grails.spring.disable.aspectj.autoweaving = true
    
    springcache {
      enabled = true
      defaults {
          eternal = false
          diskPersistent = false
      }
      caches {
          tripCache {
              memoryStoreEvictionPolicy = "LRU"
          }
      }
    }
    
  3. @Cacheable次のように、サービスのテストメソッドの上にアノテーションを追加しました。

      int counter = 0
    
      @Cacheable("testCache")
      String testInc(String x) {
        return (++counter).toString()
      }
    
  4. 今、私は次のようにコントローラーからこのメソッドを呼び出しています:

      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")

助けてください!

4

1 に答える 1

1

基本的に、ここで springcache のドキュメントを読んで誤解されました: http://gpc.github.com/grails-springcache/docs/guide/3.%20Caching%20Service%20Methods.html

Config.groovygrails.spring.disable.aspectj.autoweaving = falseの代わりに持っている必要がありtrueます。

これが同じ問題で立ち往生している人に役立つことを願っています.

于 2012-07-05T23:37:32.687 に答える