Springboot中的缓存使用

springboot 默认存储位置

默认缓存

复制代码
 JVM 堆内存, 默认缓存大小 16M,但旨在单个应用实例内有效,且缓存的数据量不会太大。

redis

复制代码
 缓存存储位置为 Redis, 分布式共享,多个应用实例可以共享缓存。

默认缓存使用步骤

1. 添加pom依赖

java 复制代码
  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-cache</artifactId>
  </dependency>

2.在主应用类或配置类上添加 @EnableCaching 注解

java 复制代码
	@SpringBootApplication
	@EnableCaching
	public class SpringBootApiApplication {
	
	    public static void main(String[] args) {
	        SpringApplication.run(SpringBootApiApplication.class, args);
	
	    }
	
	}

3.业务方法增加缓存注解 @Cacheable(value = "users", key = "#name"),即开启缓存服务。

java 复制代码
  	@RequestMapping(value = "/users")
	@Cacheable(value = "User", key = "#name")
	public List<User> getUsers(String  name) {
	
	    //创建用户集合
	    List<User> users = new ArrayList<>();
	
	    // 添加空值检查避免 NullPointerException
	    if (name != null && !name.isEmpty()) {
	        // 使用stream流过滤
	        users = users.stream()
	                .filter(user -> user.getName() != null && user.getName().contains(name))
	                .toList();
	    }
	
	    return users;
	 }

 PS: @Cacheable: 表示该方法的结果可以被缓存 value = "users": 指定缓存名称 key = "#name": 使用方法参数 name 作为缓存的键

4.修改删除业务方法需要清楚缓存使用注解 @CacheEvict(value = "users", key = "#name")

5.配置redis缓存

复制代码
 * 前提条件 项目已集成redis
 * Spring Boot 应用启动时扫描到 CacheConfig 类
 * 检测到 @Configuration 注解,将其注册为配置类
 * 检测到 @EnableCaching 注解,启用缓存基础设施
 * 初始化 CacheManager Bean 并配置 Redis 连接
java 复制代码
  @Configuration
  @EnableCaching
  public class CacheConfig {

       @Bean
       public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
           RedisCacheManager cacheManager = RedisCacheManager.builder(redisConnectionFactory)
               .cacheDefaults(RedisCacheConfiguration.defaultCacheConfig())
              .build();
           return cacheManager;
       }
   }
   PS:
    *     //@Component 用于标注类,表示该类为Spring中的bean组件
    *     //@Bean 用于标注方法,表示这个方法返回的bean对象会被Spring管理,通常在配置类中使用,配合@Configuration注解
相关推荐
余槐i2 小时前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化
需要8262 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
凤山老林3 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
伯恩bourne4 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
张彦峰ZYF4 小时前
停顿短不等于延迟低:G1、ZGC 与低延迟服务的目标分野、代价账本与选型标定
后端·回收暂停、应用停止总时长·到达安全点、分配停滞·屏障吃吞吐、并发线程吃核心·并发窗口吃堆余量·分区式靠挑回收集兑现目标·染色指针式不支持压缩引用
silvamux_4 小时前
curl 测试 OpenAI 兼容 API 的完整流程
java·人工智能·缓存·ai·oneapi
pride.li5 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
省钱兄--zs5 小时前
深圳24小时自助健身房软硬件解决方案实战指南与开发流程详解
java·数据仓库·spring boot·小程序·架构
upala5 小时前
【仓颉语言入门 · 第二篇 第 6 课】
后端
罗丹丹Luna5 小时前
移动端显示“已提交”以后:SAP 与低代码集成该怎样暴露真实状态
后端·架构