`

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”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持...

    ehcache-3.8.1.zip

    包含ehcache-107-ext.xsd、ehcache-core.xsd、ehcache-multi.xsd 版本为 3.8.1

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

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

    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...

    ehcache3:Ehcache 3.x行

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

    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”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,...

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

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

    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-web-2.0.4-API文档-中文版.zip

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

    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 对应...

    配置EhCache二级缓存

    配置 EhCache 的实例 1、 简介: EhCache缓存插件是Hibernate的另一个项目,Hibernate框架内置了对它 的支持,对于单机应用推荐使用它做为Hibernate的二级缓存。

    ehcache-2.10.5.zip

    ehcache.xml 和 ehcache.xsd 版本是 2.10.5 在ehcache.xml 与 ehcache.xsd 放在同一目录下 配置如下 <ehcache xmlns:xsi=...

    Ehcache使用

    Ehcache使用: CacheManager主要的缓存管理类,一般一个应用为一个实例,如下 CacheManager.create();也可以使用new CacheManager的方式创建 默认的配置文件为ehcache.xml文件,也可以使用不同的配置: ...

    ehcache二级缓存配置文件

    ehcache二级缓存配置文件

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

    ehcache-2.10.1-distribution+所需jar包

    ehcache监控工具ehcache-monitor-kit-1.0.3

    1.解压缩到目录下,复制ehcache-monitor-kit-1.0.0\lib\ehcache-probe-1.0.0.jar包到application的web-inf/lib目录下 2.将以下配置copy的ehcache.xml文件的ehcache标签中,注:上述链接中说的配置少写了个probe包名...

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

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

Global site tag (gtag.js) - Google Analytics