spring-ehcache.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cache="http://www.springframework.org/schema/cache" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd"> <!-- 开启spring缓存 <cache:annotation-driven cache-manager="cacheManager" /> <bean id="cacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:configLocation="classpath:ehcache.xml" p:shared="false" /> <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"> <property name="cacheManager" ref="cacheManagerFactory" /> <property name="transactionAware" value="true" />此处的transactionAware表示是否事务环绕的,如果true,则如果事务回滚,缓存也回滚,默认false。 </bean> --> <!-- 开启spring缓存--> <cache:annotation-driven cache-manager="cacheManager" /> <bean id="cacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:configLocation="classpath:ehcache.xml" p:shared="false" /> <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" p:cacheManager-ref="cacheManagerFactory" /> </beans>
ehcache.xml
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="false" monitoring="autodetect" dynamicConfig="true"> <!--timeToLiveSeconds 当缓存存活n秒后销毁 --> <!-- 缓存配置 name:缓存名称。 maxElementsInMemory:缓存最大个数。 eternal:对象是否永久有效,一但设置了,timeout将不起作用。 timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。 timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。 overflowToDisk:当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。 diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。 maxElementsOnDisk:硬盘最大缓存个数。 diskPersistent:是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false. diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。 memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。 clearOnFlush:内存数量最大时是否清除。 --> <diskStore path="java.io.tmpdir" /> <!-- <diskStore path="c:/cachetmpdir" /> --> <defaultCache maxElementsInMemory="512" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" maxElementsOnDisk="10000000" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" /> <cache name="MenuInfServiceImpl_getTreeByRole" maxElementsInMemory="0" maxElementsOnDisk="10000000" eternal="true" overflowToDisk="true" diskSpoolBufferSizeMB="50" /> <cache name="MenuInfServiceImpl_getTreeByRoleByNoSys" maxElementsInMemory="0" maxElementsOnDisk="10000000" eternal="true" overflowToDisk="true" diskSpoolBufferSizeMB="50" /> <cache name="MenuInfServiceImpl_treegrid" maxElementsInMemory="0" maxElementsOnDisk="10000000" eternal="true" overflowToDisk="true" diskSpoolBufferSizeMB="50" /> <cache name="NoInterceptorServiceImpl_isNeedInterceptor" maxElementsInMemory="0" maxElementsOnDisk="10000000" eternal="true" overflowToDisk="true" diskSpoolBufferSizeMB="50" /> <cache name="DictCdServiceImpl_getList" maxElementsInMemory="0" maxElementsOnDisk="10000000" eternal="true" overflowToDisk="true" diskSpoolBufferSizeMB="50" /> <cache name="DictCdServiceImpl_getDictCd" maxElementsInMemory="0" maxElementsOnDisk="10000000" eternal="true" overflowToDisk="true" diskSpoolBufferSizeMB="50" /> <cache name="SysFunctionInfServiceImpl_isExistUrl" maxElementsInMemory="0" maxElementsOnDisk="10000000" eternal="true" overflowToDisk="true" diskSpoolBufferSizeMB="50" /> <cache name="SysFunctionInfServiceImpl_countSysByRoleAndRequest" maxElementsInMemory="0" maxElementsOnDisk="10000000" eternal="true" overflowToDisk="true" diskSpoolBufferSizeMB="50" /> <cache name="SysLogServiceImpl_getAllTablePK" maxElementsInMemory="0" maxElementsOnDisk="10000000" eternal="true" overflowToDisk="true" diskSpoolBufferSizeMB="50" /> </ehcache>
111
@Service("dictCdService") public class DictCdServiceImpl extends BaseServiceImpl<TSysDictCd> implements IDictCdService { private IDictTpService dictTpService;// 数据字典类型 public IDictTpService getDictTpService() { return dictTpService; } @Autowired public void setDictTpService(IDictTpService dictTpService) { this.dictTpService = dictTpService; } // 清空缓存 @CacheEvict(value = { "DictCdServiceImpl_getList", "DictCdServiceImpl_getDictCd" }, allEntries = true) @Override public DictCd add(DictCd inf) { } // 清空缓存 @CacheEvict(value = { "DictCdServiceImpl_getList", "DictCdServiceImpl_getDictCd" }, allEntries = true) @Override public void remove(String ids) { } // 清空缓存 @CacheEvict(value = { "DictCdServiceImpl_getList", "DictCdServiceImpl_getDictCd" }, allEntries = true) @Override public Json modify(DictCd inf) { } @Cacheable(value = "DictCdServiceImpl_getList", key = "#dictCd.getDictTypeCd()+'_'+#dictCd.getQsr()") @Override public List<DictCd> getList(DictCd dictCd) { return olist; } @Cacheable(value = "DictCdServiceImpl_getDictCd", key = "#dictTypeCd+#dictCd") @Override public String getDictCd(String dictTypeCd, String dictCd) { return ""; } }