当前位置: 首页 > 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开关机动画踩坑简单记录
  • 收藏网友的 源程序下载网
  • CODING 缺陷管理功能正式开始公测
  • ES6--对象的扩展
  • HTTP请求重发
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • JS+CSS实现数字滚动
  • MySQL QA
  • SpiderData 2019年2月13日 DApp数据排行榜
  • SQLServer之创建显式事务
  • underscore源码剖析之整体架构
  • 大型网站性能监测、分析与优化常见问题QA
  • 番外篇1:在Windows环境下安装JDK
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 工作中总结前端开发流程--vue项目
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 前端之React实战:创建跨平台的项目架构
  • 如何学习JavaEE,项目又该如何做?
  • 深入浅出Node.js
  • 手写双向链表LinkedList的几个常用功能
  • 一个完整Java Web项目背后的密码
  • 赢得Docker挑战最佳实践
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • ​业务双活的数据切换思路设计(下)
  • # 数据结构
  • #考研#计算机文化知识1(局域网及网络互联)
  • $$$$GB2312-80区位编码表$$$$
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (2.2w字)前端单元测试之Jest详解篇
  • (C语言)球球大作战
  • (动态规划)5. 最长回文子串 java解决
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (转载)hibernate缓存
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .NET 4.0中的泛型协变和反变
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .net core webapi 大文件上传到wwwroot文件夹
  • .net 按比例显示图片的缩略图