详细解释一下springboot中的cacheable注解
时间: 2023-12-09 17:02:52 浏览: 80
好的,关于你的问题,Cacheable是Spring框架中一个注解,用于实现数据缓存。当一个方法被@Cacheable注解修饰时,Spring会先从缓存中查找是否存在相同参数的数据,如果存在,则直接返回缓存中的数据,如果不存在,调用该方法并将方法返回值缓存起来后再返回给用户。使用@Cacheable注解可以有效地提高系统的性能和响应速度。
更具体地说,Cacheable注解有三个重要的属性:value、key和condition。value属性用于指定缓存的名称,即缓存的存储空间;key属性用于指定该方法缓存数据时使用的key,如果不指定,则Spring会使用默认的key生成策略进行生成;condition属性用于指定一个SpEL表达式,如果该表达式的值为false,则不使用缓存。
例如,下面的代码演示了使用@Cacheable注解实现缓存:
```
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@Override
@Cacheable(value = "users", key = "#id")
public User getById(Long id) {
return userRepository.getById(id);
}
@Override
@CachePut(value = "users", key = "#user.id")
public User save(User user) {
return userRepository.save(user);
}
@Override
@CacheEvict(value = "users", key = "#id")
public void deleteById(Long id) {
userRepository.deleteById(id);
}
}
```
在上面的代码中,@Cacheable注解指定了缓存名称为"users",缓存的key为方法的参数,即用户的id。如果一个用户的id已经在缓存中存在,则下一次调用该方法时直接返回缓存中的数据,而不再调用userRepository.getById()方法。如果条件不符合,则直接调用userRepository.getById()方法,并将返回值缓存起来。
阅读全文