当前位置: 首页 > news >正文

网站建设公司基本流程ciid中国室内设计官网

网站建设公司基本流程,ciid中国室内设计官网,外包加工原因,wordpress 网站变慢一、介绍 Spring Cache是一个框架#xff0c;实现了基于注解的缓存功能#xff0c;只需要简单地加一个注解#xff0c;就能实现缓存功能#xff0c;大大简化我们在业务中操作缓存的代码。 Spring Cache只是提供了一层抽象#xff0c;底层可以切换不同的cache实现。具体就…一、介绍 Spring Cache是一个框架实现了基于注解的缓存功能只需要简单地加一个注解就能实现缓存功能大大简化我们在业务中操作缓存的代码。 Spring Cache只是提供了一层抽象底层可以切换不同的cache实现。具体就是通过CacheManager接口来统一不同的缓存技术。CacheManager是Spring提供的各种缓存技术抽象接口。 针对不同的缓存技术需要实现不同的CacheManager CacheManager描述EhCacheCacheManager使用EhCache作为缓存技术GuavaCacheManager使用Google的GuavaCache作为缓存技术RedisCacheManager使用Redis作为缓存技术 二、注解 在SpringCache中提供了很多缓存操作的注解常见的是以下的几个 注解说明EnableCaching开启缓存注解功能Cacheable在方法执行前spring先查看缓存中是否有数据如果有数据则直接返回缓存数据若没有数据调用方法并将方法返回值放到缓存中CachePut将方法的返回值放到缓存中CacheEvict将一条或多条数据从缓存中删除 在spring boot项目中使用缓存技术只需在项目中导入相关缓存技术的依赖包并在启动类上使用EnableCaching开启缓存支持即可。 例如使用Redis作为缓存技术只需要导入Spring data Redis的maven坐标即可。 三、使用方式 3.1、EnableCaching注解 在引导类上加该注解就代表当前项目开启缓存注解功能。 3.2、CachePut注解 CachePut 说明 作用: 将方法返回值放入缓存 value: 缓存的名称, 每个缓存名称下面可以有很多key key: 缓存的key ---------- 支持Spring的表达式语言SPEL语法 案例演示 在save方法上加注解CachePut   当前UserController的save方法是用来保存用户信息的我们希望在该用户信息保存到数据库的同时也往缓存中缓存一份数据我们可以在save方法上加上注解 CachePut用法如下 /** * CachePut将方法返回值放入缓存 * value缓存的名称每个缓存名称下面可以有多个key * key缓存的key */ CachePut(value userCache, key #user.id) PostMapping public User save(User user){userService.save(user);return user; } key的写法如下 #user.id : #user指的是方法形参的名称, id指的是user的id属性 , 也就是使用user的id属性作为key ; #user.name: #user指的是方法形参的名称, name指的是user的name属性 ,也就是使用user的name属性作为key ; #result.id : #result代表方法返回值该表达式代表以返回对象的id属性作为key #result.name : #result代表方法返回值该表达式 代表以返回对象的name属性作为key 3.3、CacheEvict注解 CacheEvict 说明 作用: 清理指定缓存 value: 缓存的名称每个缓存名称下面可以有多个key key: 缓存的key ---------- 支持Spring的表达式语言SPEL语法 案例演示 在 delete 方法上加注解CacheEvict   当我们在删除数据库user表的数据的时候,我们需要删除缓存中对应的数据,此时就可以使用CacheEvict注解, 具体的使用方式如下: /** * CacheEvict清理指定缓存 * value缓存的名称每个缓存名称下面可以有多个key * key缓存的key */ CacheEvict(value userCache,key #p0) //#p0 代表第一个参数 //CacheEvict(value userCache,key #root.args[0]) //#root.args[0] 代表第一个参数 //CacheEvict(value userCache,key #id) //#id 代表变量名为id的参数 DeleteMapping(/{id}) public void delete(PathVariable Long id){userService.removeById(id); } 在 update 方法上加注解CacheEvict   在更新数据之后数据库的数据已经发生了变更我们需要将缓存中对应的数据删除掉避免出现数据库数据与缓存数据不一致的情况。 //CacheEvict(value userCache,key #p0.id) //第一个参数的id属性 //CacheEvict(value userCache,key #user.id) //参数名为user参数的id属性 //CacheEvict(value userCache,key #root.args[0].id) //第一个参数的id属性 CacheEvict(value userCache,key #result.id) //返回值的id属性 PutMapping public User update(User user){userService.updateById(user);return user; } 3.4、Cacheable注解 Cacheable 说明: 作用: 在方法执行前spring先查看缓存中是否有数据如果有数据则直接返回缓存数据若没有数据调用方法并将方法返回值放到缓存中 value: 缓存的名称每个缓存名称下面可以有多个key key: 缓存的key ---------- 支持Spring的表达式语言SPEL语法 案例演示 在getById上加注解Cacheable   /** * Cacheable在方法执行前spring先查看缓存中是否有数据如果有数据则直接返回缓存数据若没有数据调用方法并将方法返回值放到缓存中 * value缓存的名称每个缓存名称下面可以有多个key * key缓存的key */ Cacheable(value userCache,key #id) GetMapping(/{id}) public User getById(PathVariable Long id){User user userService.getById(id);return user; } 缓存非null值     在Cacheable注解中提供了两个属性分别为 condition unless 。 condition : 表示满足什么条件, 再进行缓存 ;unless : 表示满足条件则不缓存 ; 与上述的condition是反向的 ;  具体实现方式如下: /*** Cacheable在方法执行前spring先查看缓存中是否有数据如果有数据则直接返回缓存数据若没有数据调用方法并将方法返回值放到缓存中* value缓存的名称每个缓存名称下面可以有多个key* key缓存的key* condition条件满足条件时才缓存数据* unless满足条件则不缓存*/ Cacheable(value userCache,key #id, unless #result null) GetMapping(/{id}) public User getById(PathVariable Long id){User user userService.getById(id);return user; } 注意 此处我们使用的时候只能够使用 unless 因为在condition中我们是无法获取到结果 #result的 在list方法上加注解Cacheable   在list方法中进行查询时有两个查询条件如果传递了id根据id查询 如果传递了name 根据name查询那么我们缓存的key在设计的时候就需要既包含id又包含name。 具体的代码实现如下 Cacheable(value userCache,key #user.id _ #user.name) GetMapping(/list) public ListUser list(User user){LambdaQueryWrapperUser queryWrapper new LambdaQueryWrapper();queryWrapper.eq(user.getId() ! null,User::getId,user.getId());queryWrapper.eq(user.getName() ! null,User::getName,user.getName());ListUser list userService.list(queryWrapper);return list; } 四、集成Redis 在使用上述默认的ConcurrentHashMap做缓存时服务重启之后之前缓存的数据就全部丢失了操作起来并不友好。在项目中使用我们会选择使用redis来做缓存主要需要操作以下几步 pom.xml   dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-cache/artifactId /dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId /dependency application.yml   spring:redis:host: localhostport: 6379password: root123456database: 0cache:redis:time-to-live: 1800000 #设置缓存过期时间可选
http://www.hkea.cn/news/14588797/

相关文章:

  • 教育网站制作服务优化搜索引擎的方法
  • 百度不收录的网站本地营销型网站建设
  • 小米路由器 做网站wordpress主题sora
  • 咋样查看网站用什么编程语言做的付费网站怎么制作
  • 营销助手app官方下载关键词优化策略有哪些
  • 紫色的网站vps做网站怎么加速
  • 期末作业制作网站网站建设存在问题整改报告
  • 网站建设你懂的凡科活动不良记录多久解除
  • ktv在那些网站做宣传效果好小程序商城怎么开通
  • 建设网站的申请信用卡分期花卉网站建设推广
  • 动漫网站源码免费提高搜索引擎检索效果的方法
  • 成都高端网站建设那家好网站营销力
  • 宁波高端网站设计公司秦皇岛网站制作公司哪家好
  • 南宁建设网站云溪网络建站宝盒
  • 网站服务器价格中国公司排名500强名单
  • 做网站版面手机网站微信登录接口
  • 商丘网站网站建设营销推广方案案例
  • 青岛专业建设网站门户网站的大数据应用
  • 网站网上商城制作成都建网站
  • 电子商务网站开发技术有哪些专业足球网站开发
  • 最新一键自助建站程序源码手表网站建设策划
  • 做一个卖车的网站该怎么做邢台网站建设的公司
  • 纸巾 技术支持 东莞网站建设修改wordpress文章发布页
  • 网站死链存在的问题wordpress product中文
  • 如何建设动漫网站html网站建设方案
  • 无锡模板网站闵行区教育局官网
  • 做网站网站多久会被抓合肥生态丽景网站建设
  • 网站建设服务器租用多少钱店铺设计方案
  • 重庆电力建设设计公司网站新建的网站只能用临时域名打开
  • 手机h5网站模板下载高端网站建设公司哪家服务好