结果缓存
对于需要被大量访问的数据,Spring提供了缓存解决方案。因为实体层面存在数据关联,因此我们采用在Service层缓存DTO的方式使用缓存。
只有高频的、重复的查询才有缓存的需求,比如:根据航班ID查询航班。一般系统不推荐使用结果缓存。
依赖
配置
开发者需要在入口类上配置@EnableCaching
启用缓存的支持。
示例
对于Optional
对象,缓存的内容为实际数据,而非Optional
对象本身。
@CacheConfig
全局的配置,一般用于指定cacheManager
和cacheNames
,简化缓存配置。
@Cacheable
根据唯一标识查询数据的方法常用此注解。方法执行之后,会将返回值放入缓存中。默认情况下,缓存的key即为方法的参数。
使用@Cacheable注解的方法,如果key被找到,则不执行方法体。
@CachePut
修改数据的方法常用此注解,更新缓存中的数据。此例中,key = "#result.id"
表示从返回值中获取id
属性作为key。
缓存的数据为方法的返回值,因此方法必须返回DTO。
key使用SpEL(Spring Expression Language)定义,具体语法请参考:https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#expressions
@CacheEvict
批量更新数据或者删除数据的方法常用此注解,删除缓存中对应的记录。此例中,allEntries = true
表示所有缓存的数据都被清空。
参考文档
关于Spring Cache的更多内容请参考官方文档:https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#cache
Last updated