zoukankan      html  css  js  c++  java
  • 【Spring 缓存】

    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 "";
        }
    }

  • 相关阅读:
    win10下Anaconda3在虚拟环境python_version=3.5.3 中配置pyspark
    在Pycharm上编写WordCount程序
    ASP.NET Core读取AppSettings
    如何高逼格读取Web.config中的AppSettings
    C# 防止同时调用=========使用读写锁三行代码简单解决多线程并发的问题
    C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现。
    Sql Server 里的向上取整、向下取整、四舍五入取整的实例!
    ECMAscript5 新增数组内函数
    js 严格模式
    js中数组去重
  • 原文地址:https://www.cnblogs.com/kikyoqiang/p/12701344.html
Copyright © 2011-2022 走看看