Spring 缓存数据

缓存(Caching)可以存储经常会用到的信息,这样每次需要的时候,这些信息都是立即可用的。尽管Spring自身并没有实现缓存的解决方案,但是它对缓存功能提供了声明式的支持,能够与多种流行的缓存实现进行集成。

启用对缓存的支持

Spring对缓存的支持有两种方式:
1)注解驱动的缓存
2)XML声明的缓存

使用Spring的缓存抽象时,最为通用的方式就是在方法上添加@Cacheable和@CacheEvict注解。

通过使用@EnableCaching启用注解驱动的缓存

import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.concurrent.ConcurrentMapCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableCaching // 启用缓存
public class CacheConfig {

    /**
     * 声明缓存管理器
     * @return
     */
    @Bean
    public CacheManager cacheManager(){
        return new ConcurrentMapCacheManager();
    }

}

缓存管理器(CacheManager),是Spring缓存抽象的核心,它能够与多个流行的缓存实现进行集成。

ConcurrentMapCacheManager,使用java.util.concurrent.ConcurrentHashMap作为其缓存存储,但它的缓存存储是基于内存的,它的生命周期是与应用关联。

配置缓存管理器

Spring 3.1内置了五个缓存管理器实现,如下所示:

  1. SimpleCacheManager
  2. NoOpCacheManager
  3. ConcurrentMapCacheManager
  4. CompositeCacheManager
  5. EhCacheCacheManager

Spring 3.2引入了另外一个缓存管理器,这个管理器可以用在基于JCache(JSR-107)的缓存提供商之中。

Spring Data又提供了两个缓存管理器:

RedisCacheManager(来自于Spring Data Redis项目)
GemFireCacheManager(来自于Spring Data GemFire项目)

使用EhCacheCacheManager

使用Java配置的方式设置EhCacheCacheManager

        <dependency>
            <groupId>net.sf.ehcache</groupId>
            <artifactId>ehcache-core</artifactId>
            <version>2.6.11</version>
        </dependency>
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.ehcache.EhCacheCacheManager;
import org.springframework.cache.ehcache.EhCacheManagerFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;

import net.sf.ehcache.CacheManager;

@Configuration
@EnableCaching
public class CachingConfig {

    /**
     * 配置EhCacheCacheManager
     * @param cm
     * @return
     */
    @Bean
    public EhCacheCacheManager chacheManager(CacheManager cm){
        return new EhCacheCacheManager(cm);
    }

    /**
     * 配置 EhCacheManagerFactoryBean
     * @return
     */
    @Bean
    public EhCacheManagerFactoryBean ehcache(){
        EhCacheManagerFactoryBean ehCacheManagerFactoryBean = new EhCacheManagerFactoryBean();
        ehCacheManagerFactoryBean.setConfigLocation(new ClassPathResource("ehcache.xml"));
        return ehCacheManagerFactoryBean;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值