`
bdk82924
  • 浏览: 564971 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Spring ehCache 示例

 
阅读更多
http://blog.chinaunix.net/uid-20577907-id-2834484.html


Ehcache的类层次模型主要为三层,最上层的是CacheManager,他是操作Ehcache的入口。我们可以通过CacheManager.getInstance()获得一个单子的CacheManger,或者通过CacheManger的构造函数创建一个新的CacheManger。每个CacheManager都管理着多个Cache。而每个Cache都以一种类Hash的方式,关联着多个Element。而Element则是我们用于存放要缓存内容的地方。
在配置EhCache前需要引入两个开发包:ehcache-1.3.0.jar和commons-logging-1.04.jar
配置文件
例子:ehcache.xml
<?xml version="1.0" encoding="UTF-8"?>

<ehcache>


	<defaultCache maxElementsInMemory="2" eternal="false"
		timeToIdleSeconds="1" timeToLiveSeconds="1" overflowToDisk="false"
		memoryStoreEvictionPolicy="LRU" />



	<cache name="sampleCache1" maxElementsInMemory="5" eternal="false"
		overflowToDisk="false" timeToIdleSeconds="1" timeToLiveSeconds="1"
		memoryStoreEvictionPolicy="LRU">
 
	</cache>

	<cache name="userCache" maxElementsInMemory="5" eternal="false"
		overflowToDisk="false" timeToIdleSeconds="1" timeToLiveSeconds="1"
		memoryStoreEvictionPolicy="LRU">

	</cache>

</ehcache>


注:在ehcache的配置文件里面必须配置defaultCache。每个<cache>标签定义一个新的cache,属性的含义基本上可以从名字上得到,详细的说明可以参考上面的链接。
示例程序:
例子:
import java.util.List;

import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;

public class TestEhCache
{

    public static void main(String[] args) throws Exception
    {
        CacheManager manager = new CacheManager("ehcache.xml");
        Cache cache = manager.getCache("sampleCache1");
        for (int i = 0; i < 6; i++)
        {
            Element e = new Element("key" + i, "value" + i);
            cache.put(e);
        }

        List<String> keys = cache.getKeys();
        for (String key : keys)
        {
            System.out.println(key + "," + cache.get(key));
        }
        cache.remove("key2");

        Cache userCache = manager.getCache("userCache");
        userCache.put(new Element("1", new User("1")));
        userCache.put(new Element("2", new User("2")));

        keys = userCache.getKeys();
        for (String key : keys)
        {
            System.out.println(key + "," + userCache.get(key));
        }

    }
}


public class User
{
    private String id;
    private String name;
 
}



注:程序的流程也是比较明晰的,首先是获取一个CacheManager,这是使用Ehcache的入口,然后通过名字获取某个Cache,然后就可以对Cache存取Element。Cache使用类Hash的方式来管理Element。
事件处理
说明:可以为CacheManager添加事件监听,当对CacheManager增删Cache时,事件处理器将会得到通知。要配置事件处理,需要通过ehcache的配置文件来完成。
配置文件:ehcache.xml
<?xml version="1.0" encoding="UTF-8"?>

<ehcache>


	<defaultCache maxElementsInMemory="2" eternal="false"
		timeToIdleSeconds="1" timeToLiveSeconds="1" overflowToDisk="false"
		memoryStoreEvictionPolicy="LRU" />



	<cache name="sampleCache1" maxElementsInMemory="5" eternal="false"
		overflowToDisk="false" timeToIdleSeconds="1" timeToLiveSeconds="1"
		memoryStoreEvictionPolicy="LRU">
		<cacheEventListenerFactory class="EhCacheListen" />

	</cache>

 

</ehcache>


注:通过<cacheManagerEventListenerFactory>来注册事件处理器的工厂类。
代码:
import java.util.Properties;
import net.sf.ehcache.CacheException;
import net.sf.ehcache.Ehcache;
import net.sf.ehcache.Element;
import net.sf.ehcache.event.CacheEventListener;
import net.sf.ehcache.event.CacheEventListenerFactory;

public class EhCacheListen extends CacheEventListenerFactory
{
    @Override
    public CacheEventListener createCacheEventListener(Properties properties)
    {
        return new CEL();
    }
}

class CEL implements CacheEventListener
{
    public void dispose()
    {
    }

    public void notifyElementEvicted(Ehcache cache, Element element)
    {
    }

    public void notifyElementExpired(Ehcache cache, Element element)
    {
    }

    public void notifyElementPut(Ehcache cache, Element element) throws CacheException
    {
        System.out.println(element.getKey() + " was added.");
    }

    public void notifyElementRemoved(Ehcache cache, Element element) throws CacheException
    {
        System.out.println(element.getKey() + " was removed.");
    }

    public void notifyElementUpdated(Ehcache cache, Element element) throws CacheException
    {
    }

    public void notifyRemoveAll(Ehcache cache)
    {
    }

    @Override
    public Object clone() throws CloneNotSupportedException
    {
        return super.clone();
    }
}


注:这里的代码与之前的类似,由此可见Ehcache的事件处理采用的是一种类plugin方式,也就是说,事件处理的添加是以不修改源代码为前提的。
分享到:
评论

相关推荐

    spring+ehcache示例整合Demo

    在这个"spring+ehcache示例整合Demo"中,我们将会探讨如何将Ehcache集成到Spring框架中,以实现高效的缓存管理。 首先,我们需要在项目的`pom.xml`文件中引入Ehcache和Spring的依赖。Ehcache通常使用的是`org....

    spring+ehcache完整示例demo

    本示例旨在通过一个完整的Spring集成Ehcache的Demo,帮助开发者理解如何在实际项目中实现高效的缓存管理。 首先,Ehcache是一个开源的、基于Java的分布式缓存系统,它可以显著减少对数据库的访问,从而提高系统的...

    Ehcache集成Spring的使用(转载)

    这篇博客将深入探讨如何将 Ehcache 集成到 Spring 应用中,以及如何使用 Spring AOP 实现计算结果的缓存。 首先,集成 Ehcache 到 Spring 需要以下步骤: 1. **引入依赖**: 在 Maven 或 Gradle 的配置文件中添加 ...

    spring+ehcache demo

    本示例"spring+ehcache demo"将带你深入理解如何在Spring环境中集成并使用Ehcache进行数据缓存。 Ehcache是一款广泛使用的开源Java缓存库,它提供了内存和磁盘存储,支持分布式缓存,并且可以与Spring框架无缝结合...

    Spring与ehcache结合使用

    ### Spring与ehcache结合使用详解 #### 一、前言 在现代软件开发中,缓存技术被广泛应用于提高应用程序的性能。其中,Spring框架因其灵活性和强大的功能,在Java领域得到了广泛应用;而ehcache作为一款高性能、...

    spring ehcache

    文件列表中的 "springEhcache" 可能是一个包含示例代码或配置的项目,用于演示如何在 Spring 中集成和使用 Ehcache。通过研究这个项目,你可以更深入地理解和掌握 Spring 与 Ehcache 的整合,以及如何在实际应用中...

    Ehcache 整合Spring 使用页面、对象缓存

    下面是一些基础的Ehcache使用示例: ```java // 创建CacheManager实例 CacheManager cacheManager = CacheManager.create(); // 或者通过指定配置文件路径创建 cacheManager = CacheManager.create("/config/...

    spring2.5整合ehcache2.0使用

    在本文中,我们将深入探讨如何将Spring 2.5与Ehcache 2.0进行集成...在EhCacheDemo项目中,你将找到一个完整的示例,包括所有必要的配置文件、Java代码和测试用例,这将帮助你更好地理解和实践Spring与Ehcache的集成。

    Spring Boot缓存实战 EhCache示例

    Spring Boot 缓存实战 EhCache 示例 在本文中,我们将介绍如何使用 EhCache 实现 Spring Boot 缓存。EhCache 是一个流行的开源缓存框架,能够帮助我们提高应用程序的性能。 首先,我们需要在 pom 文件中引入 ...

    Spring4 整合EhCache实现 页面缓存 零配置

    在本文中,我们将深入探讨如何使用Spring4框架与EhCache进行整合,以实现零配置的页面缓存功能。EhCache是一个广泛使用的开源Java缓存解决方案,它提供了高效的内存和磁盘缓存机制,有助于提升应用程序性能。通过...

    spring整合ehcache的完整用例

    在`ehcacheDemo`项目中,你可以找到具体的代码示例,包括配置文件、服务类以及相关的测试用例,帮助你理解和实践这一过程。注意,实际应用中需要根据项目需求调整缓存配置,如缓存大小、存活时间等。

    spring+ibatis+ehcache整合例子

    这个"spring+ibatis+ehcache整合例子"是一个完整的示例项目,展示了如何将这三个框架无缝集成到一个基于MySQL数据库的应用中。下面将详细介绍这三个框架及其整合的关键点。 **Spring框架** Spring是一个全面的企业...

    Spring + Ehcache 注解形式配置

    在IT行业中,Spring框架是Java领域最常用的轻量级应用框架之一,而Ehcache则是一种广泛使用的缓存解决方案。本文将深入探讨如何在Spring框架中通过注解方式配置Ehcache,以便优化应用程序的性能。 首先,让我们理解...

    spring支持ehcache

    在【压缩包子文件的文件名称列表】"Springcache"中,可能包含了Spring整合Ehcache的示例代码或者配置文件,可以帮助读者更好地理解上述知识点。这些文件可能包括Spring的配置文件(如`applicationContext.xml`或Java...

    spring messageSource结合ehcache demo

    总结,本示例展示了如何将Spring的`messageSource`与Ehcache相结合,以优化从数据库读取国际化消息的过程。通过缓存策略,我们可以减少对数据库的频繁访问,提高应用程序的响应速度。同时,这个过程也体现了Spring...

    在Spring+Hibernate集成环境中使用EhCache缓存

    在Spring和Hibernate集成的开发环境中,使用EhCache作为缓存机制是常见的优化策略,它能够显著提升应用程序的性能和响应速度。EhCache是一款开源的、高性能的、内存级的分布式缓存解决方案,适用于Java应用程序。...

    Spring整合EhCache详细教程(史上最全)

    -- ehcache.xml 示例 --&gt; &lt;ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd"&gt; eternal="false" timeToIdleSeconds="120" ...

    ehcache-spring-dao:spring dao ehcache 集成示例

    本示例“ehcache-spring-dao”是关于如何将EHCache与Spring DAO集成的教程,它利用了Jersey作为RESTful服务的提供者。下面我们将详细探讨这些关键组件及其集成方式。 首先,EHCache是一款广泛使用的开源Java分布式...

    Spring Boot整合EhCache的步骤详解

    在本文中,我们将深入探讨如何将EhCache与Spring Boot集成,以便在应用程序中实现高效的数据缓存。EhCache是一个流行的Java缓存框架,它以其高性能和轻量级特性而受到广泛使用,尤其在Hibernate中作为默认的...

Global site tag (gtag.js) - Google Analytics