一、了解缓存配置
先来了解一下配置方法吧,SimpleCacheManager和CaffeineCacheManager配置的区别:
SimpleCacheManager: 这种缓存管理器允许你在应用程序启动时通过配置多个CaffeineCache来创建多个缓存。 这种方式可以让你为每个方法单独配置缓存过期时间。 CaffeineCacheManager: 这种缓存管理器使用了一个全局的Caffeine配置来创建所有的缓存。 这种方式不能为每个方法单独配置缓存过期时间,但是可以在程序启动时配置全局的缓存配置,这样就可以轻松地设置所有方法的缓存过期时间。 总结: 如果你希望为每个方法单独配置缓存过期时间,那么建议使用第一种方式。 否则,如果你希望设置全局的缓存配置,那么建议使用第二种方式。
pom文件
<!--Spring缓存组件--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <!--Caffeine--> <dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caffeine</artifactId> <version>2.6.2</version> </dependency>
二、使用缓存:SimpleCacheManager方式
CacheNameTimeConstant:定义缓存的过期时间
/** * @ClassName CacheNameTimeConstant * @Author zhangzhixi * @Description 定义键的过期时间 * @Date 2023-01-05 22:30 * @Version 1.0 */ public interface CacheNameTimeConstant { String CACHE_DEFAULT = "CACHE_DEFAULT"; String CACHE_5SECS = "CACHE_5SECS"; String CACHE_10SECS = "CACHE_10SECS"; String CACHE_30SECS = "CACHE_30SECS"; }
CaffeineConfig:缓存配置
import com.github.benmanes.caffeine.cache.Caffeine; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.caffeine.CaffeineCacheManager; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; @Configuration @EnableCaching public class CaffeineConfig { @Bean public CacheManager localEntityCacheManager() { CaffeineCacheManager caffeineCacheManager = new CaffeineCacheManager(); Caffeine<Object, Object> caffeine = Caffeine.newBuilder() // 初始大小 .initialCapacity(10) // 最大容量 .maximumSize(100) // 打开统计 .recordStats() // 5分钟不访问自动丢弃 .expireAfterAccess(5, TimeUnit.MINUTES); caffeineCacheManager.setCaffeine(caffeine); // 设定缓存器名称 caffeineCacheManager.setCacheNames(getNames()); // 值不可为空 caffeineCacheManager.setAllowNullValues(false); return caffeineCacheManager; } private static List<String> getNames() { List<String> names = new ArrayList<>(1); names.add("localEntityCache"); return names; } }
Service层
UserService
/** * @author zhangzhixi * @description 针对表【user】的数据库操作Service * @createDate 2022-05-01 12:15:07 */ public interface UserService extends IService<User> { /** * 根据id查询用户 * * @param userId 用户id * @return 用户信息 */ User selectByIdUser(Long userId); /** * 更新用户 * @param user 实体 * @return =1更新成功,否则更新失败 */ User updateUser(User user); /** * 删除用户 * @param userId 用户id * @return =1删除成功,否则删除失败 */ boolean delUser(Long userId); }
UserServiceImpl
Controller层
标签:缓存,SpringBoot,CACHE,Caffeine,springframework,caffeine,import,注解 From: https://www.cnblogs.com/zhangzhixi/p/17029258.html