spring 自带 全局缓存
时间: 2023-07-25 08:38:05 浏览: 113
是的,Spring Framework 提供了多种全局缓存的实现,最常用的是基于 Spring Cache 抽象的缓存实现。Spring Cache 抽象定义了缓存注解和缓存操作 API,可以方便地通过声明式或编程式的方式来使用缓存。
Spring Cache 抽象支持多种缓存实现,包括:
1. ConcurrentMapCache:基于 ConcurrentHashMap 实现的本地缓存实现,适用于单机环境。
2. EhCacheCacheManager:基于 Ehcache 实现的缓存管理器,适用于单机或集群环境。
3. RedisCacheManager:基于 Redis 实现的缓存管理器,适用于单机或集群环境。
4. CaffeineCache:基于 Caffeine 实现的本地缓存实现,适用于单机环境。
等等。
使用 Spring Cache 抽象,只需在方法上添加缓存注解,如 @Cacheable、@CachePut、@CacheEvict 等,即可进行缓存操作。以下是一个使用 Spring Cache 抽象的示例:
```java
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
@Override
@Cacheable(value = "users", key = "#id")
public User getUserById(Long id) {
// 从数据库中获取用户信息
return userDao.getUserById(id);
}
}
```
在上述示例中,@Cacheable 注解表示该方法结果可以被缓存,value 参数表示缓存名称,key 参数表示缓存键值,可以使用 SpEL 表达式来生成。当调用 getUserById 方法时,如果缓存中存在对应的值,则直接返回缓存中的值,否则从数据库中获取,并将结果存入缓存中。
需要注意的是,在使用 Spring Cache 抽象时,需要在 Spring 配置文件中配置缓存管理器和缓存实现,具体配置方式可以参考 Spring 官方文档。
阅读全文