spring boot simple类型cache使用详解
注意:这里用的不是 Redis 的缓存,simple 的缓存默认用的是 Java 的 ConcurrentHashMap, 单纯的 simple 缓存,只需要引入下面的 pom 依赖即可:spring-boot-starter-cache
<dependency> <grohttp://www.devze.comupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> <version>2.5.3</version> </dependency>
如果你的pom里面同时还引入了:spring-boot-starter-data-redis
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.5.3</version> </dependency>
并且配置了 spring.redis 相关属性,那么请务必指定缓存类型为 simple,否则会自动使用基于 redis 的 cache,如果你又没有配置redis相关设置的话,就会报:local class incompati编程客栈ble: stream classdesc serialVerjssionUID
spring: redis: lettuce: pool: min-idle=0: max-wait=-1ms: max-active=3: max-idle=3: db: ${REDIS_DB:} host: ${REDIS_HOST:} password: ${REDIS_PASSWORD:} port: ${REDIS_PORT:} # 有了上面的配置后,必须指定下面的配置,否则会自动使用基于 redis 的 cache spring: cache: type: simple
然后直接新建一个Bean,配置如下的代码即可:
@Component public class CacheTools { private static Logger log = LoggerFactory.getLogger(CacheTools.class); @Cacheable("mapData") public Map<String,String> getCacheData() { Map<String,String> cacheMap=new HashMap<>(); cacheMap.put("k1","v1"); cacheMap.put("k2","v2"); cacheMap.put("k3","v3"); log.info编程客栈(" init spring boot cache, total count={} ", cacheMap.size()http://www.devze.com); return cacheMap; } @CacheEvict(value = "mapData") public void clearCache(){ } @CachePut(cacheNames = "mapData", key = "#key") public void updateCache(String key, String value){ } }
这样就可以了,然后在Controller里面直接调用,第一次的没有缓存的时候,会执行该段代码完成初始化,后续再调用的时候,直接就走cache了,不会在执行代码了, 同理执行缓存清空和更新也类似
到此这篇关于spring boot simple类型cache使用的文章就介绍到这了,更多相关spring boot simple类型内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论