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

百度免费收录网站oa办公系统下载安装

百度免费收录网站,oa办公系统下载安装,免费网站模板宠物用品店,彩钢做网站能赚钱吗Spring Cache 介绍 Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。 Spring Cache 提供了一层抽象,底层可以切换不同的缓存实现,例如: EHCacheCaffeineR…

Spring Cache

介绍

Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。

Spring Cache 提供了一层抽象,底层可以切换不同的缓存实现,例如:

  • EHCache
  • Caffeine
  • Redis(常用)

起步依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId>  		            		       	 <version>2.7.3</version> 
</dependency>

常用注解

在SpringCache中提供了很多缓存操作的注解,常见的是以下的几个:

注解说明
@EnableCaching开启缓存注解功能,通常加在启动类上
@Cacheable在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;如果没有缓存数据,调用方法并将方法返回值放到缓存中
@CachePut将方法的返回值放到缓存中
@CacheEvict将一条或多条数据从缓存中删除

在spring boot项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类上使用@EnableCaching开启缓存支持即可。

例如,使用Redis作为缓存技术,只需要导入Spring data Redis的maven坐标即可。

入门案例

1). 环境准备

数据库准备:

创建名为spring_cache_demo数据库,将springcachedemo.sql脚本直接导入数据库中。

在这里插入图片描述

引导类上加@EnableCaching:

package com.shisan;import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;@Slf4j
@SpringBootApplication
@EnableCaching//开启缓存注解功能
public class CacheDemoApplication {public static void main(String[] args) {SpringApplication.run(CacheDemoApplication.class,args);log.info("项目启动成功...");}
}

2). @CachePut注解

@CachePut 说明:

​ 作用: 将方法返回值,放入缓存

​ value: 缓存的名称, 每个缓存名称下面可以有很多key

​ key: 缓存的key ----------> 支持Spring的表8

在save方法上加注解@CachePut

当前UserController的save方法是用来保存用户信息的,我们希望在该用户信息保存到数据库的同时,也往缓存中缓存一份数据,我们可以在save方法上加上注解 @CachePut,用法如下:

	/*** CachePut:将方法返回值放入缓存* value:缓存的名称,每个缓存名称下面可以有多个key* key:缓存的key*/@PostMapping@CachePut(value = "userCache", key = "#user.id")//key的生成:userCache::1public User save(@RequestBody User user){userMapper.insert(user); return user;}

说明: key的写法如下

#user.id : #user指的是方法形参的名称, id指的是user的id属性 , 也就是使用user的id属性作为key ;

#result.id : #result代表方法返回值,该表达式 代表以返回对象的id属性作为key ;

#p0.id:#p0指的是方法中的第一个参数,id指的是第一个参数的id属性,也就是使用第一个参数的id属性作为key ;

#a0.id:#a0指的是方法中的第一个参数,id指的是第一个参数的id属性,也就是使用第一个参数的id属性作为key ;

#root.args[0].id:#root.args[0]指的是方法中的第一个参数,id指的是第一个参数的id属性,也就是使用第一个参数

的id属性作为key ;

启动服务,通过swagger接口文档测试,访问UserController的save()方法

因为id是自增,所以不需要设置id属性

在这里插入图片描述

查看user表中的数据

在这里插入图片描述

查看Redis中的数据

在这里插入图片描述

3). @Cacheable注解

@Cacheable 说明:

​ 作用: 在方法执行前,spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中

​ value: 缓存的名称,每个缓存名称下面可以有多个key

​ key: 缓存的key ----------> 支持Spring的表达式语言SPEL语法

在getById上加注解@Cacheable

	/*** Cacheable:在方法执行前spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,	  *调用方法并将方法返回值放到缓存中* value:缓存的名称,每个缓存名称下面可以有多个key* key:缓存的key*/@GetMapping@Cacheable(cacheNames = "userCache",key="#id")public User getById(Long id){User user = userMapper.getById(id);return user;}

重启服务,通过swagger接口文档测试,访问UserController的getById()方法

第一次访问,会请求我们controller的方法,查询数据库。后面再查询相同的id,就直接从Redis中查询数据,不用再查询数据库了,就说明缓存生效了。

提前在redis中手动删除掉id=1的用户数据

在这里插入图片描述

**查看控制台sql语句:**说明从数据库查询的用户数据

在这里插入图片描述

**查看Redis中的缓存数据:**说明已成功缓存

在这里插入图片描述

再次查询相同id的数据时,直接从redis中直接获取,不再查询数据库。

4). @CacheEvict注解

@CacheEvict 说明:

​ 作用: 清理指定缓存

​ value: 缓存的名称,每个缓存名称下面可以有多个key

​ key: 缓存的key ----------> 支持Spring的表达式语言SPEL语法

在 delete 方法上加注解@CacheEvict

	@DeleteMapping@CacheEvict(cacheNames = "userCache",key = "#id")//删除某个key对应的缓存数据public void deleteById(Long id){userMapper.deleteById(id);}@DeleteMapping("/delAll")@CacheEvict(cacheNames = "userCache",allEntries = true)//删除userCache下所有的缓存数据public void deleteAll(){userMapper.deleteAll();}

重启服务,通过swagger接口文档测试,访问UserController的deleteAll()方法

在这里插入图片描述

**查看user表:**数据清空

在这里插入图片描述

查询Redis缓存数据

在这里插入图片描述

http://www.yayakq.cn/news/490466/

相关文章:

  • 二维码网页制作免费网站制作亚马逊购物网站
  • 个人备案网站可以做电影站吗做网站的时候会用 鸟瞰图吗
  • 用于做分析图 的地图网站在线制作个人网站
  • 简易网站手机网站制作明细报价表
  • 广州建站模板搭建国外视觉设计网站
  • 站长素材音效网站打不开404
  • wordpress精品模板免费发布网站seo外链
  • 网站建设密码做网页需要什么
  • 达内网站开发怎么做镜像网站
  • 定制网站制作服务商最近免费中文字幕mv免费高清版
  • 徐州鸿美网站建设如何在国外网站做翻译兼职
  • 快速做效果图的网站叫什么商务咨询网站源码
  • 容桂商城网站建设青海企业网站建设开发
  • 制作团购网站简单的html网页制作
  • 重庆做网站找谁中商外贸app
  • 上海做网站及推广html5网站图标
  • 成都哪家做网站怎样建免费网站
  • 专业seo网站优化公司做网站较好的公司
  • asp网站访问量大北京通信管理局网站备案
  • 怎么用idea做响应式网站菏泽住房和城乡建设局网站
  • 织梦如何做视频网站上海市奉贤区建设局网站
  • 自己做的网站怎么让别人能访问wordpress评论显示分页
  • 网站网页设计网店代运营托管
  • 浏览器禁止网站怎么做河北哪里在建设
  • 站长工具查询入口威海网页设计制作公司
  • 网站弹出文字在阿里怎样做单页销售网站
  • 网站 美化pc 网站开发设计
  • 网站开发集成环境怎样做一个自己的网站
  • 南昌二手网站开发方案做网站有什么书
  • 社交网站建设网站网站架构包含哪几个部分