2016-05-10 4 views
0

私のプロジェクトでは、@Cacheableアノテーションを使用しています。書籍やマークを含む計算結果を返すサービスメソッドを使用しています。@Controllerクラスメソッドでキャッシングをエバークしたいこの新しいデータベースは新しい計算に必要であるため、データベースに予約してください。Cache Evictが動作しません

サービスクラス: @Cacheable( "メタ情報") public ... calculate(){return calculation;}

コントローラクラス: @RequestMapping @CacheEvict(値= "メタ情報"、allEntries =真) public void addNewBook();

それはなぜ働いていない?

答えて

0

ほとんどの場合、ルートアプリケーションコンテキストで@EnableCachingを使用している可能性があります。これは、子のDispatcherServletアプリケーションコンテキストには影響しません。あなたのコントローラの@CacheEvictアノテーションは処理されません。 Springは、BeanPostProcessorを使用して、実行時にプロキシを使用してキャッシュ動作を組み立てます。 BeanPostProcessorsはアプリケーションコンテキストごとにスコープされます。

addNewBookメソッド定義とキャッシュメタデータをサービスクラスに移動し、そのメソッドをコントローラから呼び出します。

関連する問題