最近开始学习使用Ehcache, 3.4的文档实在过于简单,尤为是对于XML配置,例子太少。相对于硬编码,我更偏心灵活的XML配置,为了实现xml配置,摸索了两天,终于运行成功。java
ehcache.xml文件:缓存
<config xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://www.ehcache.org/v3' xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core.xsd"> <persistence directory="d:\\mycache"/> <cache alias="foo"> <key-type>java.lang.String</key-type> <value-type>java.lang.String</value-type> <heap unit="entries">200</heap> </cache> <cache-template name="securityObjTemplate"> <key-type>java.lang.String</key-type> <value-type>java.lang.String</value-type> <resources> <heap unit="entries">2000</heap> <offheap unit="MB">500</offheap> <disk persistent="true" unit="MB">1000</disk> </resources> </cache-template> <!-- 缓存行情数据 --> <cache alias="hq_quote11" uses-template="securityObjTemplate"> <key-type>java.lang.String</key-type> <value-type>java.lang.String</value-type> </cache> <cache alias="last_hq_quote" uses-template="securityObjTemplate"> </cache> </config>
java代码以下:学习
CacheConfigurationBuilder<String, String> securityConfigBuilder = xmlConfiguration.newCacheConfigurationBuilderFromTemplate("securityObjTemplate", String.class, String.class); CacheManagerBuilder<CacheManager> cmb = CacheManagerBuilder.newCacheManagerBuilder(); for(ServiceCreationConfiguration<?> scc: xmlConfiguration.getServiceCreationConfigurations()) { if(scc instanceof CacheManagerConfiguration) { cmb = cmb.with((CacheManagerConfiguration)scc); } } CacheManager securityCacheManager = cmb.build(true); Cache cache = securityCacheManager.createCache(key, securityConfigBuilder);