SpringBoot非官方教程 | 第十三篇:springboot集成spring cache

本文介绍如何在springboot中使用默认的spring cache,

Spring 定义 CacheManager 和 Cache 接口用来统一不同的缓存技术。例如 JCache、 EhCache、 Hazelcast、 Guava、 Redis 等。在使用 Spring 集成 Cache 的时候,我们需要注册实现的 CacheManager 的 Bean。

Spring Boot 为我们自动配置了 JcacheCacheConfiguration、 EhCacheCacheConfiguration、HazelcastCacheConfiguration、GuavaCacheConfiguration、RedisCacheConfiguration、SimpleCacheConfiguration 等。

在我们不使用其他第三方缓存依赖的时候,springboot自动采用ConcurrenMapCacheManager作为缓存管理器。

在pom文件引入spring-boot-starter-cache环境依赖:

 
 
 

这个你可以写一个很复杂的数据查询操作,比如操作mysql、nosql等等。为了演示这个栗子,我只做了一下线程的延迟操作,当作是查询数据库的时间。

实现接口类:

 
 

启动程序,你会发现程序在控制台依次打印了:

2014-06-05 12:15:35.783 … : … Fetching books

2014-06-05 12:15:40.783 … : isbn-1234 --> >Book{isbn=‘isbn-1234’, title=‘Some book’}

2014-06-05 12:15:43.784 … : isbn-1234 -->Book{isbn=‘isbn-1234’, title=‘Some book’}

 

2014-06-05 12:15:46.786 … : isbn-1234 -->Book{isbn=‘isbn-1234’, title=‘Some book’}

你会发现程序依次3s打印一行日志。这时还没开启缓存技术。

在程序的入口中加入@ EnableCaching开启缓存技术:

 

在需要缓存的地方加入@Cacheable注解,比如在getByIsbn()方法上加入@Cacheable(“books”),雅思培训一般多少钱这个方法就开启了缓存策略,当缓存有这个数据的时候,会直接返回数据,不会等待去查询数据库。

 

这时再启动程序,你会发现程序打印:

isbn-1234 -->Book{isbn=‘isbn-1234’, title=‘Some book’}
2017-04-23 18:17:09.479 INFO 8054 — [ main] forezp.AppRunner : isbn-4567 -->Book{isbn=‘isbn-4567’, title=‘Some book’}
2017-04-23 18:17:09.480 INFO 8054 — [ main] forezp.AppRunner : isbn-1234 -->Book{isbn=‘isbn-1234’, title=‘Some book’}
2017-04-23 18:17:09.480 INFO 8054 — [ main] forezp.AppRunner : isbn-4567 -->Book{isbn=‘isbn-4567’, title=‘Some book’}
2017-04-23 18:17:09.481 INFO 8054 — [ main] forezp.AppRunner : isbn-1234 -->Book{isbn=‘isbn-1234’, title=‘Some book’}
2017-04-23 18:17:09.481 INFO 8054 — [ main] forezp.AppRunner : isbn-1234 -->Book{isbn=‘isbn-1234’, title=‘Some book’}

只有打印前面2个数据,程序等了3s,之后的数据瞬间打印在控制台上了,这说明缓存起了作用。

源码下载:https://github.com/forezp/SpringBootLearning

你可能感兴趣的:(SpringBoot非官方教程 | 第十三篇:springboot集成spring cache)