商城网站建设方案流程,php做购物网站详情页的代码,整个网站全部乱码,谷歌代理Spring Cache框架
Spring Cache 是一个框架#xff0c;实现了基于注解的缓存功能#xff0c;只需要简单地加一个注解#xff0c;就能实现缓存功能。 Spring Cache 提供了一层抽象#xff0c;底层可以切换不同的缓存实现#xff0c;例如#xff1a;
EHCacheCaffeineRedi…Spring Cache框架
Spring Cache 是一个框架实现了基于注解的缓存功能只需要简单地加一个注解就能实现缓存功能。 Spring Cache 提供了一层抽象底层可以切换不同的缓存实现例如
EHCacheCaffeineRedis(常用)
常用注解
EnableCaching 开启缓存注解功能通常加在启动类上 Cacheable 在方法执行前先查询缓存中是否有数据如果有数据则直接返回缓存数据如果没有缓存数据调用方法并将方法返回值放到缓存中 CachePut 将方法的返回值放到缓存中 CacheEvict 将一条或多条数据从缓存中删除
在spring boot项目中使用缓存技术只需在项目中导入相关缓存技术的依赖包并在启动类上使用EnableCaching开启缓存支持即可。 例如使用Redis作为缓存技术只需要导入Spring data Redis的maven坐标即可。
具体使用
导入Maven坐标
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-cache/artifactId version2.7.3/version
/dependency添加EnableCache注解
package com.sky;
SpringBootApplication
EnableTransactionManagement //开启注解方式的事务管理
EnableCaching //开启缓存注解 功能
Slf4j
EnableScheduling // 开启任务调度
public class SkyApplication {public static void main(String[] args) {SpringApplication.run(SkyApplication.class, args);log.info(server started);}
}在用户端的SetmealController套餐Controller中的查询方法加入注解Cacheable
作用: 在方法执行前spring先查看缓存中是否有数据如果有数据则直接返回缓存数据若没有数据调用方法并将方法返回值放到缓存中在根据分类id查询套餐的时候
/*** 条件查询** param categoryId 分类id* return*/
Cacheable(cacheNames setmealCache, key #categoryId)// 存储到Redis中的key为setmealCache::100
GetMapping(/list)
ApiOperation(根据分类id查询套餐)
public ResultListSetmeal list(Long categoryId) {Setmeal setmeal new Setmeal();setmeal.setCategoryId(categoryId);setmeal.setStatus(StatusConstant.ENABLE);ListSetmeal list setmealService.list(setmeal);// cache中存的value是该方法的返回结果return Result.success(list);
}在管理端接口SetmealController的 save、delete、update、startOrStop等方法上加入CacheEvict注解
新增的话删除要新增到分类的分类id批量删除删除所有的缓存修改删除所有的缓存套餐起售停售删除所有的缓存CacheEvict(cacheNames “setmealCache”,key “#setmealDTO.categoryId”)//key: setmealCache::100CacheEvict(cacheNames “setmealCache”,allEntries true) /*** 新增套餐** param setmealDTO* return*/
PostMapping
ApiOperation(新增套餐)
CacheEvict(cacheNames setmealCache,key #setmealDTO.categoryId)//key: setmealCache::100
public Result save(RequestBody SetmealDTO setmealDTO) {setmealService.saveWithDish(setmealDTO);return Result.success();
}/*** 批量删除套餐** param ids* return*/
DeleteMapping
ApiOperation(批量删除套餐)
CacheEvict(cacheNames setmealCache,allEntries true)
public Result delete(RequestParam ListLong ids) {setmealService.deleteBatch(ids);return Result.success();参考
https://www.bilibili.com/video/BV1TP411v7v6/?spm_id_from333.337.search-card.all.clickvd_source0d2a9b4260ce977e642d073c6ee2260d