在我的项目中,我正在使用@Cacheable注释,这是一种服务方法,它返回涉及书籍和一些标记的计算结果,我想在@Controller类方法中将Evict Caching添加到数据库中,因为这个新的计算将是必要的。
服务类:
@Cacheable(" METAS&#34)
public ... calculate(){return calculation;}
控制器类:
@RequestMapping
@CacheEvict(value =" metas",allEntries = true)
public void addNewBook();
为什么它不起作用?
答案 0 :(得分:1)
很可能你在根应用程序上下文中有@EnableCaching。这不会对子DispatcherServlet应用程序上下文产生影响。控制器上的@CacheEvict注释不会被处理。 Spring使用BeanPostProcessor通过使用代理在运行时编织缓存行为。 BeanPostProcessors的范围是每个应用程序上下文。
将addNewBook方法定义和缓存元数据移动到服务类,并从控制器调用该方法