缓存Evict不起作用

时间:2016-05-10 12:24:35

标签: spring caching

在我的项目中,我正在使用@Cacheable注释,这是一种服务方法,它返回涉及书籍和一些标记的计算结果,我想在@Controller类方法中将Evict Caching添加到数据库中,因为这个新的计算将是必要的。

服务类: @Cacheable(" METAS&#34) public ... calculate(){return calculation;}

控制器类: @RequestMapping @CacheEvict(value =" metas",allEntries = true) public void addNewBook();

为什么它不起作用?

1 个答案:

答案 0 :(得分:1)

很可能你在根应用程序上下文中有@EnableCaching。这不会对子DispatcherServlet应用程序上下文产生影响。控制器上的@CacheEvict注释不会被处理。 Spring使用BeanPostProcessor通过使用代理在运行时编织缓存行为。 BeanPostProcessors的范围是每个应用程序上下文。

将addNewBook方法定义和缓存元数据移动到服务类,并从控制器调用该方法