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

Spring Boot 3.X 下Redis缓存的尝试(二):自动注解实现自动化缓存操作

前言

上文我们做了在Spring Boot下对Redis的基本操作,如果频繁对Redis进行操作而写对应的方法显示使用注释更会更高效;

比如:

依之前操作对一个业务进行定入缓存需要把数据拉取到后再定入;

而今天我们可以通过注释的方式不需要额外代码去实现对Redis的操作。

推荐在读本文之前先看一下上一篇《》

一、加入依赖

Swagger 3.0

<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.3.0</version>
</dependency>
spring-boot-starter-cache  缓存
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId>
</dependency>

二、开启缓存

@SpringBootApplication
@EnableCaching
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}

三、Swagger配置

import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class SwaggerConfig {@Beanpublic GroupedOpenApi publicApi() {String[] paths = {"/**"};String[] packages = {"com.example.demo.controller"};//扫描的路径return GroupedOpenApi.builder().group("public").pathsToMatch(paths).packagesToScan(packages).build();}@Beanpublic OpenAPI openAPI() {return new OpenAPI().info(new Info().title("接口文档标题").description("SpringBoot3 集成 Swagger3接口文档").version("v1")).externalDocs(new ExternalDocumentation().description("项目API文档").url("/"));}
}

四、实体类

import lombok.Data;import java.io.Serializable;@Data
public class Stu implements  Serializable{//private static final long serialVersionUID = 1L;private Integer id;private String name;private Integer age;
}

五、服务类 注解实现

import com.example.demo.mode.Stu;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;@Service
public class RedisService {//----通过注释实现Redis的写入@Cacheable (cacheNames = "abc",unless =  "#result==null",key =  "#id")public Stu getStuById(Integer id) {Stu stu = new Stu();stu.setId(id);stu.setName("张三");stu.setAge(18);return stu;}//---- 通过注释实现Redis的更新@CachePut (cacheNames = "abc",key =  "#result.id")public Stu update(Stu stu) {stu.setName("李四");stu.setAge(19);return stu;}//---- 通过注释实现Redis的删除@CacheEvict (cacheNames = "abc",key =  "#id")public void delete(Integer id){}
}

六、控制层测试

@RestController
@Tag(name = "TestController",description = "测试接口")
@RequestMapping(value = "/swaggertest")
public class StuController {@Autowiredprivate RedisService redisService;@GetMapping("/getStuById")public Stu getStuById(Integer id){return redisService.getStuById(id);}@GetMapping("/update")public Stu update(Stu stu){return redisService.update(stu);}@DeleteMapping ("/delete")public void delete(Integer id){redisService.delete(id);}
}

七、效果展示

下篇:《Spring Boot 3.X 下Redis缓存的尝试(三):精进-用Jason进行序列化》

相关文章:

  • android binder(二)应用层编程实例
  • 助力活力生活的饮食营养指南
  • LabVIEW轴角编码器自动检测
  • MySQL:视图+用户管理+访问+连接池原理
  • Linux 脚本文件编辑(vim)
  • 平滑技术(数据处理,持续更新...)
  • 一次借助ChatGPT抵御恶意攻击的经历,为个人服务器添加自动防御系统Fail2ban
  • 小团队如何落地 Scrum 模型:从 0 到 1 的实战指南
  • 使用 PHP 和 Guzzle 对接印度股票数据源API
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | Form Wave(表单label波动效果)
  • 房产销售系统 Java+Vue.js+SpringBoot,包括房源信息、房屋户型、房源类型、预约看房、房屋评价、房屋收藏模块
  • CSS强制div单行显示不换行
  • SystemVerilog—三种线程之间的区别
  • Python数学可视化——显函数、隐函数及复杂曲线的交互式绘图技术
  • 【Linux】基础文件IO
  • 使用pandas实现合并具有共同列的两个EXCEL表
  • Perl One-liner 数据处理——基础语法篇【匠心】
  • 汽车安全体系:FuSa、SOTIF、Cybersecurity 从理论到实战
  • JAVA中的注解和泛型
  • docker-部署Nginx以及Tomcat
  • wordpress仿天涯主题/杭州seo搜索引擎优化
  • 怎么做网站写书/小时seo百度关键词点击器
  • c++语言网站建设/广告联盟官网入口
  • 贵安新区网站建设/网站制作公司排名
  • 手机怎么打开微信网站/快速排名优化公司
  • 做网站用什么ide/推广普通话的文字内容