网站后期维护工作包括哪些,韩国 网站 域名,福州制作网站企业,摄影网站的意义Spring Cache 缓存框架#xff1a; Spring Cache功能介绍Spring Cache的Maven依赖Spring Cache的常用注解EnableCaching注解CachePut注解Cacheable注解CacheEvict注解 Spring Cache功能介绍 Spring Cache是Spring的一个框架#xff0c;实现了基于注解的缓存功能。只需简单加一… Spring Cache 缓存框架 Spring Cache功能介绍Spring Cache的Maven依赖Spring Cache的常用注解EnableCaching注解CachePut注解Cacheable注解CacheEvict注解 Spring Cache功能介绍 Spring Cache是Spring的一个框架实现了基于注解的缓存功能。只需简单加一个注解就能实现缓存功能。 Spring Cache提供了一层抽象底层可以切换不同的缓存实现。比较常见的(底层)缓存实现有 Redis、EHCache、Caffeine。可自定义地修改Spring Cache底层的缓存实现。比如 你想用Redis进行缓存可修改Spring Cache配置让其底层通过Redis来实现缓存功能。 在具体的项目中想切换Spring Cache底层的“缓存实现”时 只需修改该 “缓存实现”的依赖Spring Cache底层就会自动切换“缓存实现”。 例如此时的底层的缓存实现为: EHCache想修改为Redis只需把Redis依赖修改为EHCache的依赖即可。 当然你的电脑得提前装好Redis、配置好Redis Spring Cache的Maven依赖 !-- Spring-data-redis依赖 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency!-- Spring Cache的依赖结合上面的Redis依赖所以该Cache框架的底层“缓存实现”为: Redis --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-cache/artifactId/dependencySpring Cache的常用注解
EnableCaching注解 通常加在类 (启动类 )上用于 开启缓存注解功能。 Slf4j
SpringBootApplication
EnableCaching //开启缓存注解功能
public class CacheDemoApplication {public static void main(String[] args) {SpringApplication.run(CacheDemoApplication.class,args);log.info(项目启动成功...);}
}CachePut注解 一般加在方法上将方法的返回值放到缓存中。 只能“放”缓存数据 PostMapping/** 当数据插入到数据库的同时,还需要把这个数据保存到Redis中一份(进行数据的缓存),* 此时可用Spring Cache框架的 CachePut注解 :将方法的返回值存入到缓存中。*///使用Spring Cache缓存数据/* 如果此时User的id为1,那么存入Redis中的“key名称”为: userCache::1 */CachePut(cacheNames userCache,key #user.id)public User save(RequestBody User user){userMapper.insert(user);return user;}CachePut注解的多种实现方式 PostMapping/** 当数据插入到数据库的同时,还需要把这个数据保存到Redis中一份(进行数据的缓存),* 此时可用Spring Cache框架的 CachePut注解 :将方法的返回值存入到缓存中。*///使用Spring Cache缓存数据/* 如果此时User的id为1,那么存入Redis中的“key名称”为: userCache::1 */CachePut(cacheNames userCache,key #user.id)/* #result得到是一个User对象,结合该对象的id,生成存入Redis数据库中的 key */CachePut(cacheNames userCache,key #result.id) //存入Redis的key名为: userCache::1 --对象导航/* #p0 : 获得save()方法的第一个参数即User对象 */CachePut(cacheNames userCache,key #p0.id) //存入Redis的key名为: userCache::1/* #a0 : 获得方法的第一个参数,... */CachePut(cacheNames userCache,key #a0.id) //存入Redis的key名为: userCache::1/* #root.args[1] : 获得第一个参数 */CachePut(cacheNames userCache,key #root.args[1].id) //存入Redis的key名为: userCache::1//上面的CachePut()注解选其中一个使用即可。public User save(RequestBody User user){userMapper.insert(user);return user;}Cacheable注解 一般加在方法上在方法执行前先查询缓存中是否有数据如果有数据则直接返回缓存数据如果没有缓存数据调用方法并将方法返回值放到缓存中。 即“可”取缓存数据也可“放”缓存数据 GetMapping/*在方法执行前先查询缓存中是否有数据如果有数据则直接返回缓存数据。如果没有缓存数据调用方法并将方法返回值放到缓存中。*/Cacheable(cacheNames userCache,key #id) // key的生成 : userCache::10public User getById(Long id){ //如果该id的值为: 10User user userMapper.getById(id);return user;}CacheEvict注解 一般加在方法上有 一条或多条缓存数据从缓存中删除。 /*数据库中的数据被删掉了对应的也需要给清理掉 (清除一条缓存数据)*/CacheEvict(cacheNamesuserCache,key #id) //清理一条或多条缓存数据DeleteMappingpublic void deleteById(Long id){userMapper.deleteById(id);}/*数据库中的数据被删掉了对应的也需要给清理掉 (清除多条缓存数据)*/
CacheEvict(cacheNames userCache,allEntries true) //清理一条或多条缓存数据DeleteMapping(/delAll)public void deleteAll(){userMapper.deleteAll();}