Spring Boot默认缓存体验
在前面搭建的Web应用基础上,开启Spring Boot默认支持的缓存,体验Spring Boot默认缓存的使用效果。
(1)使用@EnableCaching注解开启基于注解的缓存支持。@EnableCaching用于开启基于注解的缓存支持,该注解通常会添加在项目启动类上,内容如文件1所示。
文件1 Chapter06Application.java
1 import org.springframework.boot.SpringApplication;
2 import org.springframework.boot.autoconfigure.SpringBootApplication;
3 import org.springframework.cache.annotation.EnableCaching;
4 @EnableCaching // 开启Spring Boot基于注解的缓存管理支持
5 @SpringBootApplication
6 public class Chapter06Application {
7 public static void main(String[] args) {
8 SpringApplication.run(Chapter06Application.class, args);
9 }
10 }
(2)使用@Cacheable注解对数据操作方法进行缓存管理。将@Cacheable注解标注在Service类的查询方法上,对查询结果进行缓存,示例代码如下。
// 根据评论id查询评论信息
@Cacheable(cacheNames = "comment")
public Comment findById(int comment_id){
Optional<Comment> optional = commentRepository.findById(comment_id);
if(optional.isPresent()){
return optional.get();
}
return null;
}
上述代码中,在CommentService类中的findById(int comment_id)方法上添加了查询缓存注解@Cacheable,该注解的作用是将查询结果Comment存放在Spring Boot默认缓存中名称为comment的名称空间(namespace)中,对应缓存唯一标识(即缓存数据对应的主键k)默认为方法参数comment_id的值。
(3)Spring Boot默认缓存测试。启动chapter06项目,项目启动成功后,通过浏览器继续访问“http://localhost:8080/get/1
”查询id为1的用户评论信息。不论浏览器刷新多少次,访问同一个用户评论信息,页面的查询结果都会显示同一条数据,同时,控制台也只显示有一条SQL语句,具体如图1和图2所示。
图1 findById()方法查询结果
图2 执行findById()方法控制台显示的SQL语句
从图1和2可以看出,执行findById()方法正确查询出用户评论信息Comment,在配置了Spring Boot默认注解后,重复进行同样的查询操作,数据库只执行了一次SQL查询语句,说明项目开启的默认缓存支持已经生效。