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

SpringCash

文章目录

  • 简介
  • 引入依赖
  • application.yml配置
  • 常用注解
  • 使用
    • 1. 启动类添加注解
    • 使用方法上添加注解


简介

  • Spring Cache是一个框架,实现了基于注解的缓存功能
  • 底层可以使用EHCache、Caffeine、Redis实现缓存。

注解一般放在Controller的方法上,@CachePut 注解一般有两个参数,第一个时存储的名称,第二个时名称后边的key,使用SpEL动态的计算key。其余的注解也都是这两个参数。在用户端的查询操作需要使用@Cacheable,服务器端的增删改都使用@CacheEvict

引入依赖

SpringCache
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId>
</dependency>Redis
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>mysql
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope>
</dependency>mybatis
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.0</version>
</dependency>

application.yml配置

server:port: 8888
spring:datasource:druid:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=trueusername: rootpassword: 123456redis:host: localhostport: 6379password: 123456database: 1
logging:level:com:itheima:mapper: debugservice: infocontroller: info

常用注解

在这里插入图片描述

使用

1. 启动类添加注解

package com.itheima;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("项目启动成功...");}
}

使用方法上添加注解

package com.itheima.controller;import com.itheima.entity.User;
import com.itheima.mapper.UserMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {@Autowiredprivate UserMapper userMapper;/*** 新增方法返回值放入缓存*/@PostMapping//参数1,缓存名称,参数2,动态获取方法参数字段//最总保存效果是 [参数1::参数2]。例如[userCache::1]@CachePut(cacheNames = "userCache", key = "#user.id")//也可以这样写,参数2不再是方法参数,而是方法的返回值//@CachePut(cacheNames = "userCache",key = "#result.id")//也可以这样写,p0代表第一个参数,p1代表第二个参数//@CachePut(cacheNames = "userCache", key = "#p0.id")public User save(@RequestBody User user) {userMapper.insert(user);return user;}//删除  userCache::id@CacheEvict(cacheNames = "userCache", key = "#id")@DeleteMappingpublic void deleteById(Long id) {userMapper.deleteById(id);}//删除 所有的 userCache::*@CacheEvict(cacheNames = "userCache", allEntries = true)@DeleteMapping("/delAll")public void deleteAll() {userMapper.deleteAll();}//cache生成 userCache::id@Cacheable(cacheNames = "userCache", key = "#id")@GetMappingpublic User getById(Long id) {User user = userMapper.getById(id);return user;}}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java--数组小结
  • 【Spine学习06】之IK约束绑定,制作人物待机动画,图表塞贝尔曲线优化动作
  • Java之等待唤醒方法
  • 如何成为一名黑客?小白必学的12个基本步骤
  • 【设计模式之组合模式 -- C++】
  • 在项目中使用Volta控制node版本
  • 【css】html 标初始化CSS样式(初学者必看)
  • VUE之重定向redirect
  • flutter 导出iOS问题3
  • PyTorch 统计属性-Tensor基本操作
  • ARM-V9 RME(Realm Management Extension)系统架构之系统安全能力的MPAM
  • android 异屏同显二.
  • 方差,标准差,CPK指标数据分析 (使用SQL做数据分析)
  • Mongodb使用$<identifier>过滤更新数组元素
  • 高通Android开关机动画踩坑简单记录
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • [译]Python中的类属性与实例属性的区别
  • 【node学习】协程
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Android优雅地处理按钮重复点击
  • CSS盒模型深入
  • Map集合、散列表、红黑树介绍
  • MobX
  • October CMS - 快速入门 9 Images And Galleries
  • Odoo domain写法及运用
  • opencv python Meanshift 和 Camshift
  • php的插入排序,通过双层for循环
  • REST架构的思考
  • vuex 学习笔记 01
  • 翻译--Thinking in React
  • 服务器从安装到部署全过程(二)
  • 机器学习 vs. 深度学习
  • 基于Android乐音识别(2)
  • 看域名解析域名安全对SEO的影响
  • 老板让我十分钟上手nx-admin
  • 两列自适应布局方案整理
  • 聊聊flink的TableFactory
  • 前端面试之闭包
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 使用agvtool更改app version/build
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 与 ConTeXt MkIV 官方文档的接驳
  • 正则表达式小结
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • Prometheus VS InfluxDB
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • # Apache SeaTunnel 究竟是什么?
  • #、%和$符号在OGNL表达式中经常出现
  • #pragma multi_compile #pragma shader_feature
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (CPU/GPU)粒子继承贴图颜色发射
  • (Java入门)抽象类,接口,内部类
  • (二十五)admin-boot项目之集成消息队列Rabbitmq