在实际开发中,对于要反复读取的数据,最好的处理方式是将之在内存中缓存一份,频繁的数据库访问会造成程序效率低下,很容易把数据库搞挂掉,同时内存的读写速度本身就要强于硬盘。下面介绍在Spring Boot如何解决数据缓存问题。本博客是以初识在Spring Boot+JPA为基础的。
思路:1.添加依赖 2.在启动类开启缓存 3.在具体方法上配置缓存
第一步:添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> |
第二步:在springboot主函数类开启缓存,只需要加@EnableCaching即可。在Spring Boot中通过@EnableCaching注解自动化配置合适的缓存管理器(CacheManager),Spring Boot根据下面的顺序去侦测缓存提供者:
- Generic
- JCache (JSR-107)
- EhCache 2.x
- Hazelcast
- Infinispan
- Redis
- Guava
- Simple
@EnableCaching public class DemoApplication {Xxx} |
在service中配置如下:
/**
* CachePut 将结果放进缓存
* @param id
* @return
*/
@CachePut(value = "user", key = "#id")
public User addUser(Integer id) {
User user = new User();
user.setUsername("小红");
user.setBirthday(new Date());
userService.addUser(user);
System.out.println("添加了缓存id为" + id + "的缓存");
return user;
}
/**
/**
|
在repository配置如下:
@CacheConfig(cacheNames = "users")
public interface UserRepository extends JpaRepository<User, Integer> {
@Cacheable User findById(Integer id);} |
需要注意的地方:
- 缓存是缓存方法的返回值,比如User findById这个方法是缓存查询到的user对象,如果此处返回void则缓存无数据。
- 添加缓存注解在方法上面或者类上面,一般是在service实现类中,或者dao的实现类,或者repository里。不是在