@Cacheable和 @CachePut有什么区别
时间: 2023-12-14 14:34:04 浏览: 46
@Cacheable和@CachePut都是Spring框架中的缓存注解,它们的区别在于:
- @Cacheable注解会先查询缓存,如果缓存中存在相应的数据,则直接返回缓存数据;如果缓存中不存在相应的数据,则执行方法,并将方法的返回值存储到缓存中。
- @CachePut注解会执行方法,并将方法的返回值存储到缓存中,它不会先查询缓存,而是每次都会执行方法。
下面是一个示例代码,演示了@Cacheable和@CachePut的区别:
```java
@Service
public class UserService {
private Map<Integer, User> userMap = new HashMap<>();
@Cacheable(value = "userCache", key = "#id")
public User getUserById(int id) {
System.out.println("Executing getUserById method...");
return userMap.get(id);
}
@CachePut(value = "userCache", key = "#user.id")
public User updateUser(User user) {
System.out.println("Executing updateUser method...");
userMap.put(user.getId(), user);
return user;
}
}
```
在上面的示例中,getUserById方法使用了@Cacheable注解,updateUser方法使用了@CachePut注解。当我们第一次调用getUserById方法时,它会执行方法并将返回值存储到缓存中;当我们第二次调用getUserById方法时,它会直接从缓存中获取数据并返回,不会再次执行方法。而当我们调用updateUser方法时,它每次都会执行方法并将返回值存储到缓存中。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)