`

Ehcache(二): 从EhCacheManagerFactoryBean说起

阅读更多

    注: 跟笔者其它研究源码的博客一样, Ehcache系列也是基于一个例子来debug地跟踪, 例子详见 Ehcache(一): Spring + Ehcache开场白 中的附件.如果没有例子作参照,阅读过程中可能有些摸不着头绪.
--------------------

Ehcache(一): Spring + Ehcache开场白 中, 创建了一个实例,从这篇起, 我们开始ehcahe源码探索之路.


    先看实例中的applicationContext配置文件说起. 配置文件中第一个bean是EhCacheManagerFactoryBean, 那么它是干啥的? 看源码,我们得知它封装了三个属性(CacheManager类型的cacheManager,boolean类型的shared和表示ehcache配 置信息的configLocation).  这个类很简单,从类名和封装了的属性上也不难看出Spring用些类(afterPropertiesSet方法)来new出一个 CacheManager实例. CacheManager是Ehcache赖以运行的后防基地,这个不必多说.

    不过看afterPropertiesSet方法,它有对shared的判断. 这是干啥的? 看源码注释发现了这样的描述: whether the EHCache CacheManager should be shared (as a singleton at the VM level) or independent (typically local within the application). 也说是说通过这个来设置cache的基地是这里的Spring独用,还是跟别的(如Hibernate的Ehcache共享). 这样了就回答了我心中一个问题: 如何让Hibernate也用到Spring中启动的Ehcache?

    接下来据shared与否的设置,Spring分别通过CacheManager.create()或new CacheManager()方式来创建一个ehcache基地.

    这样一个EhCacheManagerFactoryBean创建完成, 也就代表着一个CacheManager的启用.

    下一篇中再看这个CacheManager怎么来使用?

7
1
分享到:
评论
3 楼 rmn190 2009-07-27  
3, 在每新create一个Cache时, 都要设置下setBootstrapCacheLoader,这个BootstrapCacheLoader是干啥的?

cache类里有个bootstrap方法,这里将调用bootstrapCacheLoader.load(Cache)方法。

现在来看只有RMIBootstrapCacheLoader类实现了BootstrapCacheLoader接口,又是跟集群有关,先不用考虑。

4,  CacheManager里的defaultCache怎么用? 用它来做种子再克隆别的Cache实例?确实看到了在CacheManager类里的addCache方法中defaultCache.clone()的调用。再试下Object中的clone方法。

又看到了addConfiguredCaches方法,从这个方法的执行来看,上面对clone的猜测有问题,也就是说那个默认cache并不是其它定制cache的种子,这样一来那个默认cache有什么用?



2 楼 rmn190 2009-07-27  
2,CacheManager里有CacheManagerPeerProvider和CacheManagerPeerListener类型的实例,跟注释知道它们跟RMI相关,也就是跟集群缓存相关?
1 楼 rmn190 2009-07-27  
1, "如何让Hibernate也用到Spring中启动的Ehcache? ",这个问题,又引出一个问题来:是Hibernate自己要用到的Ehcache Manager先启呢?还是Spring的先启?有没有用到线程里的sychronize关键字?

    CacheManager类里有一个ALL_CACHE_MANAGERS(其实例是这样来的Collections.synchronizedList(new ArrayList())),每生成一个CacheManager时都要执行这样一句:ALL_CACHE_MANAGERS.add(this);

  这样的执行语句跟问题有点关系,虽说没能全面地回答。

相关推荐

    ehcache-3.9.9-API文档-中英对照版.zip

    Maven坐标:org.ehcache:ehcache:3.9.9; 标签:ehcache、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持...

    SpringMVC+Mybatis+Spring+Shiro+ehcache整合配置文件

    SpringMVC、Mybatis、Spring、Shiro和Ehcache这五个技术组件是Java Web开发中的关键工具,它们各自承担着不同的职责,并通过整合来实现强大的功能。下面将详细阐述这些技术以及它们在整合中的作用。 首先,...

    Mybatis-ehcache 1.2.1源码(ehcache-cache-mybatis-ehcache-1.2.1.zip)

    Mybatis-ehcache 1.2.1 是一个集成Mybatis和Ehcache的缓存模块,用于提高Mybatis框架的查询效率。Ehcache是一个广泛使用的Java缓存解决方案,它能够有效地存储和检索数据,减少数据库的负载,提高应用程序性能。在...

    ehcache-3.8.1.zip

    Ehcache是一个开源的Java缓存库,广泛用于提高应用程序性能,通过存储数据副本来减少对数据库的访问。在3.8.1版本中,它提供了丰富的功能和优化,以支持高并发环境下的高效缓存操作。以下是关于Ehcache 3.8.1的知识...

    ehcache-3.3.1-API文档-中文版.zip

    Maven坐标:org.ehcache:ehcache:3.3.1; 标签:ehcache、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,...

    java ehcache core 2.6.8.jar 核心包和mybatis-ehcache-1.0.3.jar分享

    2. 配置Ehcache:编写`ehcache.xml`文件,定制缓存的行为。 3. 集成MyBatis:在MyBatis的配置文件中启用二级缓存,并指定使用Ehcache。 4. 编写Mapper:在Mapper接口和XML文件中,使用MyBatis的注解或元素来启用...

    ehcache-core-2.6.5.jar和mybatis-ehcache-1.0.2.jar

    ehcache.xml配置内容 <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.ehcache.org/ehcache.xsd"> eternal="false" maxElementsInMemory="1000...

    Ehcache(2): Ehcache实例在Eclipse中的配置 改进

    2. **配置Hibernate**:在Hibernate的配置文件`hibernate.cfg.xml`中,我们需要指定Ehcache作为二级缓存提供者。添加以下配置: ```xml <property name="hibernate.cache.use_second_level_cache">true ...

    ehcache-3.3.1-API文档-中英对照版.zip

    Maven坐标:org.ehcache:ehcache:3.3.1; 标签:ehcache、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持...

    ehcache-3.9.9-API文档-中文版.zip

    Maven坐标:org.ehcache:ehcache:3.9.9; 标签:ehcache、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,...

    Ehcache(一): Spring + Ehcache开场白

    <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation" value="classpath:ehcache.xml"/> ``` 接下来,我们可以在Spring的bean中使用`@...

    ehcache3:Ehcache 3.x行

    从版本3.5开始,Ehcache仅支持Java 8和更高版本。 版本3.5现在处于维护模式。 我们不再计划执行较早版本的发布。 有关当前状态的更多详细信息,请参见的。 贡献 非常荣幸! 看一下我们的。 报告问题 不好了! ...

    ehcache-2.10.1-distribution+所需jar包.zip

    Ehcache是一个开源的Java缓存库,广泛用于提高应用程序性能,通过存储数据副本来减少对数据库的访问。它在2.10.1版本中提供了优化的性能和功能,适用于各种规模的应用程序。"ehcache-2.10.1-distribution+所需jar包....

    springboot+mybatis+ehcache实现缓存数据

    在MyBatis的配置文件`mybatis-config.xml`中,我们需要启用缓存并指定使用Ehcache: ```xml ... <cacheEnabled>true <cacheImpl class="org.mybatis.cache.ehcache.EhcacheCache"/> ... ``` 然后在Mapper...

    配置EhCache二级缓存

    ### 配置EhCache二级缓存 #### 一、简介 EhCache是一个高性能、易于使用的开源缓存系统,最初由 Terracotta 组织开发。它支持多种缓存模型,包括本地缓存和分布式缓存。由于其简单易用且功能强大,EhCache 成为了 ...

    ehcache-core-2.6.11-API文档-中英对照版.zip

    Maven坐标:net.sf.ehcache:ehcache-core:2.6.11; 标签:sf、ehcache、core、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档...

    ehcache-2.10.0-API文档-中文版.zip

    赠送jar包:ehcache-2.10.0.jar; 赠送原API文档:ehcache-2.10.0-javadoc.jar; 赠送源代码:ehcache-2.10.0-sources.jar; 包含翻译后的API文档:ehcache-2.10.0-javadoc-API文档-中文(简体)版.zip 对应Maven...

    ehcache-core-2.6.11-API文档-中文版.zip

    Maven坐标:net.sf.ehcache:ehcache-core:2.6.11; 标签:sf、ehcache、core、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的...

    ehcache-web-2.0.4-API文档-中文版.zip

    Maven坐标:net.sf.ehcache:ehcache-web:2.0.4; 标签:sf、ehcache、web、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码...

    ehcache二级缓存配置文件

    **Ehcache二级缓存配置详解** Ehcache是一个广泛使用的开源Java缓存库,它提供了内存和磁盘存储的缓存解决方案,适用于提高应用程序性能和减少数据库负载。在Java应用中,尤其是在Spring框架中,Ehcache常被用作二...

Global site tag (gtag.js) - Google Analytics