善用缓存提升你的Spring工程效率

欢迎查看Java开发之上帝之眼系列教程,若是您正在为Java后端庞大的体系所困扰,若是您正在为各类繁出不穷的技术和各类框架所迷茫,那么本系列文章将带您窥探Java庞大的体系。本系列教程但愿您能站在上帝的角度去观察(了解)Java体系。使Java的各类后端技术在你心中模块化;让你在工做中能将Java各个技术了然于心;可以即插即用。本章咱们来一块儿了解Spring中咱们如何使用缓存。html

缓存能够存储经常使用到的信息,每次须要的时候咱们均可以从缓存中获取,本章咱们一块儿来进行了解Spring的缓存抽象.尽管Spring没有提供任何的缓存的实现,可是它对缓存功能提供了声明式的支持,可以与多种流行的缓存进行集成java

咱们通常在Spring项目中使用缓存功能咱们须要对Spring项目进行一些相关的配置,流程以下git

  1. 启用对缓存的支持
  2. 配置缓存管理器
  3. 应用缓存

启用对缓存的支持

JavaConfig配置启用github

@Configuration
@EnableCaching
public class SpringCacheConfig {

}

XML配置启用spring

<!--启用缓存-->
    <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);

使用示例:保存缓存code

@CachePut(value = "UserCache", key = "#result.username")
    User save(User user);

使用示例:移除缓存

@CacheEvict("UserCache")
    void remove(String username);

本章完整工程实例代码下载地址:完整项目演示工程点击下载

相关文章
相关标签/搜索