zoukankan      html  css  js  c++  java
  • Spring MVC学习总结(7)——Spring MVC整合Ehcache缓存框架

    Ehcache算是当前比较流行的缓存框架,使用缓存可以极大的缓解服务器和数据库的压力,提高访问效率,提高服务器的并发能力。接下来我们看怎么把缓存使用起来。

    SpringMVC集成Ehcache所需的jar包:

    包括ehcache-core-2.4.3.jar、ehcache-web-2.0.4.jar、guava-15.0.jar、slf4j-api-1.7.12.jar、commons-logging.jar

    jar包下载地址http://download.csdn.net/detail/qq_33556185/9550460

    将jar包放到项目里之后,我们看怎么集成它

    (一)配置ehcahce.xml  

    updateCheck="false" 不检查更新当前使用的Ehcache的版本

        eternal:缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期。

        maxElementsInMemory:缓存中允许创建的最大对象数

        overflowToDisk:内存不足时,是否启用磁盘缓存。

        timeToIdleSeconds:缓存数据的钝化时间,也就是在一个元素消亡之前,

         两次访问时间的最大时间间隔值,这只能在元素不是永久驻留时有效,

         如果该值是 0 就意味着元素可以停顿无穷长的时间。

        timeToLiveSeconds:缓存数据的生存时间,也就是一个元素从构建到消亡的最大时间间隔值,

         这只能在元素不是永久驻留时有效,如果该值是0就意味着元素可以停顿无穷长的时间。

        memoryStoreEvictionPolicy:缓存满了之后的淘汰算法

        1 FIFO,先进先出

        2 LFU,最少被使用,缓存的元素有一个hit属性,hit值最小的将会被清出缓存。

        3 LRU,最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。

    [html] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. <?xml version="1.0"encoding="UTF-8"?>   
    2. <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    3.     xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false">   
    4. <!—默认缓存--!>  
    5.     <defaultCache eternal="false"    
    6.         maxElementsInMemory="10000"   
    7.         overflowToDisk="false"    
    8.         timeToIdleSeconds="0"   
    9.         timeToLiveSeconds="0"    
    10.         memoryStoreEvictionPolicy="LFU"/>   
    11.    <!—自定义缓存--!>  
    12.     <cache name="myCache"    
    13.         eternal="false"    
    14.         maxElementsInMemory="10000"   
    15.         overflowToDisk="false"    
    16.         timeToIdleSeconds="0"   
    17.         timeToLiveSeconds="0"    
    18.         memoryStoreEvictionPolicy="LFU"/>   
    19. </ehcache>  

    (二)配置spring-common文件

    导入命名空间

    xmlns:cache="http://www.springframework.org/schema/cache"

    http://www.springframework.org/schema/cache

    http://www.springframework.org/schema/cache/spring-cache-4.1.xsd

    具体配置如下:

    启用缓存注解功能

    <cache:annotation-drivencache-manager="cacheManager"/>   

    缓存管理器工厂加载ehcache的配置

       <bean id="cacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> 

            <property name="configLocation"value="classpath:ehcache.xml"/> 

    </bean> 

    声明缓存管理器

        <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"> 

            <property name="cacheManager"ref="cacheManagerFactory"/> 

    </bean>

    到此环境已经搭建完成了。

    接下来我们看怎么使用

    (三)使用@Cacheable注解来缓存数据

    当缓存中没有该对象的时候,当然要从数据库里面访问了,从数据库查出来之后,缓存管理器会将此对象放到缓存中,下一次访问的时候,只要该对象没有消亡,则会从缓存里去取,不会再去查数据库

    value为我们自定义缓存的name,key的属性是缓存的key

    [java] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. @Cacheable(value="myCache",key="#userName")   
    2. @Override  
    3. public List<Permission>findPermissionByName(String userName) {  
    4.    System.out.println("查数据库了===========");  
    5.    return permissionRepository.findPermissionByName(userName);  

    (四)使用@CachePut注解来更新缓存

    当缓存中的对象被修改的时候,修改的方法使用该注解,缓存管理器会根据key找到被修改的对象,然后去修改缓存中的对象

    [java] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. @CachePut(value="myCache",key="#userId")//更新myCache 缓存   
    2. @Override  
    3. public void savePermission(Permissionpermission) {  
    4.    permissionRepository.savePermission(permission);  
    5. }  

    (五)使用@CacheEvict注解来清除缓存

    当对象被删除的时候,我们需要去清除缓存里面存在的该对象,若不清除,数据库里已经删除,可是缓存里还在,查询的时候,该对象还是会查出来。

    清除掉指定key的缓存  

    @CacheEvict(value="myCache",key="#userName")  

    清除掉全部缓存  

    @CacheEvict(value="myCache",allEntries=true)  

  • 相关阅读:
    alertify、js、css 使用简介
    html 跳转页面,同时跳转到一个指定的位置
    java 解析 json 遍历未知key
    JSON 字符串 与 java 对象的转换
    iOS安全系列之 HTTPS 进阶
    iOS安全系列之 HTTPS
    iOS-socket
    他人整理开源组件列表
    iOS Layout机制相关方法
    在写一个iOS应用之前必须做的7件事(附相关资源)
  • 原文地址:https://www.cnblogs.com/zhanghaiyang/p/7212909.html
Copyright © 2011-2022 走看看