Spring缓存抽象的简单介绍
Spring从3.1开始定义了org.springframework.cache.Cache
和org.springframework.cache.CacheManager接口来统一不同的缓存技术; 并支持使用JCache(JSR-107)注解简化我们开发。
Spring缓存抽象和Redis缓存的关系
首先,他们之间没有必然的联系,他们都是一种缓存技术。使用他们都可以进行缓存操作。
首先引入对应的缓存starter
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
使用@EnableCaching开启基于注解的缓存
缓存注解的使用
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
@Cacheable(cacheNames = "user")
public User findById(Integer id) {
System.out.println("查询数据库。。。");
return userMapper.findById(id);
}
}
缓存注解一般都是使用在service层上,service层是逻辑处理层。
缓存中的注解和对应概念
1 @Cacheable查询缓存,运行流程:先使用CacheManager获取Cache组件,然后在使用Cahe组件,根据key生成策略生成的key查看是否有缓存数据,没有就调用方法,然后在缓存保存。如果有缓存就不调用方法了。
2 @CachePut数据跟新缓存,在调用方法对数据库的数据跟新后进行缓存数据。
3 @CacheEvict缓存清除,在调用方法删除数据后将缓存中的数据进行删除。
4 @Caching缓存组合,可以同时使用多个缓存注解。
5.@CacheConfig缓存配置,可以用于类上配置当前类的公共配置。