随着用户规模扩大,数据库查询往往成为性能瓶颈,引入缓存是提升体验的有效手段。Spring Boot 提供了便捷的自动化配置,让我们能低侵入地为现有应用增加缓存能力。
快速入门
我们以一个基于 Spring Data JPA 访问 User 数据的案例为基础,为其添加缓存以减少数据库 IO。假设您已熟悉基础的 MySQL 读写操作,我们先回顾一下实体定义。
User 实体
@Entity
@Data
@NoArgsConstructor
public class User {
@Id
@GeneratedValue
private Long id;
private String name;
private Integer age;
public User(String name, Integer age) {
this.name = name;
this.age = age;
}
}
数据访问接口
public interface UserRepository extends JpaRepository<User, Long> {
User findByName(String name);
User findByNameAndAge(String name, Integer age);
@Query("from User u where u.name=:name")
User findUser(@Param("name") String name);
}
为了观察缓存效果,先在 application.properties 中开启 SQL 打印:
spring.jpa.show-sql=true
修改单元测试类,插入一条用户名为 AAA、年龄为 10 的数据,并通过 findByName 函数完成两次查询:
@RunWith(SpringRunner.class)
@SpringBootTest
public class Chapter51ApplicationTests {
@Autowired
UserRepository userRepository;
Exception {
userRepository.save( (, ));
userRepository.findByName();
System.out.println( + u1.getAge());
userRepository.findByName();
System.out.println( + u2.getAge());
}
}


