SpringBoot Cache使用Redis做缓存时,@Cacheable 、@CachePut 、@CacheEvict注解应该写在dao,service还是controller层?

如题,请问实际项目里 @Cacheable 、@CachePut 、@CacheEvict 这几个注解,通常是写在dao层,还是service层,还是controller层的方法上?我个人感觉应该写在dao层是最好的,因为缓存的主要作用是减轻数据库的压力,service和controller层会掺杂其他业务,并且会涉及多个表,而dao层是和数据库表一一对应的。大家看看我想的对不对,有错误请指出,谢谢!

阅读 2.9k
1 个回答

一般来说是放在Service层。

Dao层的话,一般使用MyBatis,本身有一级、二级缓存。
Controller层的话,他的职责主要是接收Web请求参数,简单处理后调用内部Service服务。尽量让它存粹一些。
Service层才是真正的业务层,这一层才是有业务含义的输出。这种输出才是比较有缓存意义的东西。

不过这种注解式的缓存局限性比较大,一般都会手动处理缓存。


本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题