Spring 整合Ehcache

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bobozai86/article/details/79949637

一、ehcache简介

       EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。具体的关于ehcache的介绍及配置教程可以网上查找,这里不再赘述。

二、引入ehcache依赖

        <dependency>
         <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache</artifactId>
            <version>2.8.2</version>
        </dependency>
三、ehcache配置

1、ehcache.xml配置

<ehcache>

    <diskStore path="java.io.tmpdir"/>

    <!--Default Cache configuration. These will applied to caches programmatically created through
       the CacheManager.

       The following attributes are required for defaultCache:

       maxInMemory       - Sets the maximum number of objects that will be created in memory
       eternal           - Sets whether elements are eternal. If eternal,  timeouts are ignored and the element
                           is never expired.
       timeToIdleSeconds - Sets the time to idle for an element before it expires. Is only used
                           if the element is not eternal. Idle time is now - last accessed time
       timeToLiveSeconds - Sets the time to live for an element before it expires. Is only used
                           if the element is not eternal. TTL is now - creation time
       overflowToDisk    - Sets whether elements can overflow to disk when the in-memory cache
                           has reached the maxInMemory limit.

       -->
    <defaultCache
            maxEntriesLocalHeap="100000"
            eternal="false"
            timeToIdleSeconds="0"
            timeToLiveSeconds="0"
            overflowToDisk="false"
    />

    <cache name="cacheTest"
           eternal="false"
           maxEntriesLocalHeap="100000"
           timeToIdleSeconds="0"
           timeToLiveSeconds="3600"
           overflowToDisk="false"
           statistics="true">
    </cache>


</ehcache>

2、在application.xml中配置

    <!--缓存配置-->
    <cache:annotation-driven cache-manager="cacheManager" />
    <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
        <property name="cacheManager" ref="ehcache"></property>
    </bean>
    <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
        <property name="configLocation" value="classpath:ehcache.xml"></property>
    </bean>

四、在Service中使用注解添加依赖。

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    @Cacheable(value = "cacheTest",key = "#id")
    public User getUserById(Long id) {
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return userMapper.selectByPrimaryKey(id);
    }
}
五、测试


可以看到第一次访问时,缓存中没有,执行Service方法,从数据库中查找,响应同时缓存到缓存,第二次执行时,直接从缓存中查找。

参考:

https://www.cnblogs.com/mxmbk/articles/5162813.html

https://blog.csdn.net/wjacketcn/article/details/50945887

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页