转摘:http://blog.sina.com.cn/s/blog_c90ce4e0010329x8.html
在实际开发工作中,如果频繁查询数据库, 是不是会给数据库服务器带来很大的压力呢?
因此,我们需要对查询出来的数据进行缓存, 这样客户端只要从数据库查询了一次数据,这批数据就会放入缓存中,以后再次查询时可以从缓存中读取,这样是不是会快很多呢?
SpringBoot支持很多种缓存方式:redis、guava、ehcahe、jcache等等。
下面我们使用SpringBoot最简单的缓存方式来对SpringBoot的缓存技术做一个简单的介绍(SpringBoot的版本是1.4.0.RELEASE)。
SpringBoot默认的缓存方式就是在内存中通过ConCurrentMap结构来进行数据的缓存。
1. 首先,新建一个SpringBoot工程,结构如下
2. 编辑POM.XML,添加相关依赖包
3. 编辑application.properties文件,对数据库连接参数进行配置
4. 编写实体类Person.java(此处省略了getter和setter方法)
5. 编写数据库访问接口PersonRepository.java, 此处用了jap框架, 继承JpaRepository接口即可实现基本的数据库增删改查操作.
6. 编写业务类接口PersonService.java,声明一些业务方法
7. 编写业务接口实现类PersonServiceImpl.java
注: @CachePut: 缓存新增的或者更新的数据到缓存中, 其中缓存名称为person,数据的key为person.id
@CacheEvict: 从缓存person中删除key为id的缓存数据
@Cacheable: 读取缓存为person中key为id的缓存数据。
@CachePut、@CacheEvict、@Cacheable若未指定key, 则方法参数作为key保存到缓存中。
8. 编写访问控制器类PersonController.java
9. 编写程序入口
注: 此处一定要加上@EnableCaching来开启SpringBoot的缓存支持
10. 测试访问:
A.我们先保存一组数据到缓存中
此时页面输出如下:
控制台输出如下:
B.此时再次从页面上访问id=21的数据, 控制台不会再打印Hibernate的查询语句以及“为id、key为:21数据做了缓存”。这表明程序未调用该方法,页面数据直接从缓存中取得。