歡迎查看Java開發之上帝之眼系列教程,如果您正在爲Java後端龐大的體系所困擾,如果您正在爲各種繁出不窮的技術和各種框架所迷茫,那麼本系列文章將帶您窺探Java龐大的體系。本系列教程希望您能站在上帝的角度去觀察(瞭解)Java體系。使Java的各種後端技術在你心中模塊化;讓你在工作中能將Java各個技術瞭然於心;能夠即插即用。本章我們來一起了解Spring工程中緩存的使用。
緩存可以存儲常用到的信息,每次需要的時候我們都可以從緩存中獲取,本章我們一起來進行了解Spring的緩存抽象.儘管Spring沒有提供任何的緩存的實現,但是它對緩存功能提供了聲明式的支持,能夠與多種流行的緩存進行集成
我們一般在Spring項目中使用緩存功能我們需要對Spring項目進行一些相關的配置,流程如下
- 啓用對緩存的支持
- 配置緩存管理器
- 應用緩存
啓用對緩存的支持
JavaConfig配置啓用
@Configuration
@EnableCaching
public class SpringCacheConfig {
}
XML配置啓用
<!--啓用緩存-->
<cache:annotation-driven/>
配置緩存管理器
在Sring中我們可以使用很多的緩存管理器的實現
- ConcurrentMapCacheManager
- SimpleCacheManager
- NoOpCacheManager
- CompositeCacheManager
- EhCacheCacheManager
- RedisCacheManager
- GemfireCacheManager
- ...
JavaConfig配置緩存管理器
@Bean
public CacheManager cacheManager() {
return new ConcurrentMapCacheManager();
}
XML配置緩存管理器
<!--聲明緩存管理器-->
<bean id="cacheManager" class="org.springframework.cache.concurrent.ConcurrentMapCacheManager"/>
應用緩存
我們經常在項目中使用註解作用在方法上,使其應用緩存,常見的註解如下
註解 | 描述 |
---|---|
@Cacheable | 先查緩存,如果緩存沒有調用方法,將返回值放入緩存中 |
@CachePut | 始終都會將返回值放入緩存中 |
@CacheEvict | 在緩存中清除一個或者多個條目 |
@Caching | 分組的註解,能夠同時應用多個其他的緩存註解 |
使用示例:查詢緩存
@Cacheable(value = "UserCache", key = "#root.args[0]")
User getUser(String username);
使用示例:保存緩存
@CachePut(value = "UserCache", key = "#result.username")
User save(User user);
使用示例:移除緩存
@CacheEvict("UserCache")
void remove(String username);
本章完整工程實例代碼下載地址:完整項目演示工程點擊下載