注解的使用参照:http://blog.csdn.net/wjacketcn/article/details/50945887 (侵删)

ehCache是纯java实现的缓存组件,spring从3.1开始引入了对ehcache的支持。

使用:

  1、在pom.xml中添加依赖

  1.      <dependency>
  2. <groupId>net.sf.ehcache</groupId>
  3. <artifactId>ehcache</artifactId>
  4. <version>2.9.1</version>
  5. </dependency>

  2、在classPath下增加ehcache配置文件ehcache.xml

  1.   <?xml version="1.0" encoding="UTF-8"?>
  2. <ehcache updateCheck="false">
  3. <diskStore path="java.io.tmpdir"/>
  4. <defaultCache
  5. maxElementsInMemory="10000"
  6. eternal="false"
  7. timeToIdleSeconds="120"
  8. timeToLiveSeconds="120"
  9. overflowToDisk="true"
  10. diskPersistent="false"
  11. diskExpiryThreadIntervalSeconds="120"
  12. memoryStoreEvictionPolicy="LRU"
  13. />
           <!--这个名称会用到-->
  14. <cache name="myCache"      
  15. maxElementsInMemory="10000"
  16. eternal="false"
  17. overflowToDisk="true"
  18. timeToIdleSeconds="30"
  19. timeToLiveSeconds="60"
  20. memoryStoreEvictionPolicy="LFU"
  21. />
  22. </ehcache>

  3、applicationContext.xml 添加配置(类似于事物配置)

  1.      <!--开启缓存的注解功能,否则注解无法生效-->
  2. <cache:annotation-driven />
  3. <!-- 声明缓存管理器 -->
  4. <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
  5. <property name="cacheManager" ref="ehCacheFactory"></property>
  6. </bean>
  7. <!--指定工厂类及ehcache.xml文件位置-->
  8. <bean id="ehCacheFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
  9. <property name="configLocation" value="classpath:ehcache.xml"/>
  10. </bean>

  4、在service层添加注解

  1.      @Cacheable(value="myCache")  //这个名称就是ehcache.xml文件中的name属性的值
  2. public List<FreeUrl> findAll(){
  3. return freeUrlMapper.findAll();
  4. }

案例:拦截器放过免认证的路径

  创建表:freeUrl

      CREATE TABLE `freeurl` (
        `id` int(11) NOT NULL,
        `url` varchar(255) DEFAULT NULL,
        PRIMARY KEY (`id`)
      )

  上述配置完成之后进行如下配置

  1、在spring-mvc.xml中配置拦截器路径  

  1.      <mvc:interceptors>
  2. <bean class="com.util.interceptors.LoginInterceptors"/>
  3. </mvc:interceptors>

  2、编写service代码并将查询结果存入缓存

  1.      @Cacheable(value="myCache")
  2. public List<FreeUrl> findAll(){
  3. return freeUrlMapper.findAll();
  4. }

  3、编写拦截器代码

  1.     public class LoginInterceptors extends HandlerInterceptorAdapter{
  2. private Logger log = LogManager.getLogger(LoginInterceptors.class);
  3. @Resource
  4. private FreeUrlService freeUrlService;
  5.  
  6. @Override
  7. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
  8. throws Exception {
  9. //获取项目路径
  10. String contextPath = request.getContextPath();
  11. //获取访问路径
  12. String requestPath = request.getServletPath();
  13.  
  14. HttpSession session = request.getSession();
  15.  
  16. //查询免认证路径
  17. List<FreeUrl> list = freeUrlService.findAll();
  18. for (FreeUrl freeUrl : list) {
  19. //如果请求路径为免认证路径则放开
  20. if(freeUrl.getUrl().equals(requestPath)){
  21. return true;
  22. }
  23. }
  24. return false;
  25. }
  26. }

4、效果查看

     启动项目之后第一次访问时会调用freeUrlService.findAll()查询数据库,同时将查询结果放入缓存。第二次及后面的访问会直接从缓存中获取已经存入的结果,
不会再去访问数据库。可以通过打印SQL来看,除了第一次访问的时候会查询数据库,后面的查询都是从缓存中获取。

  

Spring基于注解ehCache缓存整合的更多相关文章

  1. 缓存初解(三)---Spring3.0基于注解的缓存配置+Ehcache和OScache

    本文将构建一个普通工程来说明spring注解缓存的使用方式,关于如何在web应用中使用注解缓存,请参见: Spring基于注解的缓存配置--web应用实例 一.简介 在spring的modules包中 ...

  2. 缓存初解(五)---SpringMVC基于注解的缓存配置--web应用实例

    之前为大家介绍了如何使用spring注解来进行缓存配置 (EHCache 和 OSCache)的简单的例子,详见 Spring基于注解的缓存配置--EHCache AND OSCache 现在介绍一下 ...

  3. spring和ehcache整合,实现基于注解的缓存实现

    要实现基于注解的缓存实现,要求Spring的版本在3.1或以上版本. 首先需要在spring的配置文件中添加对缓存注解的实现: <?xml version="1.0" enc ...

  4. Spring基于注解的Cache支持

    Spring为我们提供了几个注解来支持Spring Cache.其核心主要是@Cacheable和@CacheEvict.使用@Cacheable标记的方法在执行后Spring Cache将缓存其返回 ...

  5. Spring 基于注解零配置开发

    本文是转载文章,感觉比较好,如有侵权,请联系本人,我将及时删除. 原文网址:< Spring 基于注解零配置开发 > 一:搜索Bean 再也不用在XML文件里写什么配置信息了. Sprin ...

  6. 阶段3 2.Spring_08.面向切面编程 AOP_9 spring基于注解的AOP配置

    复制依赖和改jar包方式 src下的都复制过来. 复制到新项目里了 bean.xml里面复制上面一行代码到下面.把aop改成context. 配置spring容器创建时要扫描的包 Service的配置 ...

  7. 详解Spring MVC 集成EHCache缓存_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 废话少说,直接上代码: ehcache.xml 文件 <?xml version="1.0" ...

  8. Spring Boot 集成 Ehcache 缓存,三步搞定!

    作者:谭朝红 www.ramostear.com/articles/spring_boot_ehcache.html 本次内容主要介绍基于Ehcache 3.0来快速实现Spring Boot应用程序 ...

  9. (spring-第4回【IoC基础篇】)spring基于注解的配置

    基于XML的bean属性配置:bean的定义信息与bean的实现类是分离的. 基于注解的配置:bean的定义信息是通过在bean实现类上标注注解实现. 也就是说,加了注解,相当于在XML中配置了,一样 ...

随机推荐

  1. paper 114:Mahalanobis Distance(马氏距离)

    (from:http://en.wikipedia.org/wiki/Mahalanobis_distance) Mahalanobis distance In statistics, Mahalan ...

  2. java运行环境和运行机制

    先来介绍三个概念: JVM----JAVA virtual machine      java虚拟机:对字节码提供相同的接口,对操作系统提供不同的接口,以适应各个OS JRE----JAVA runt ...

  3. ldap配置记录

    记录一下最近研究ldap+nfs的情况 ldap这个东西上次研究nis的时候就有人说那是上个世纪的老东西了,不应该继续使用.虽然意识到如此但时间不够还是使用了nis,这次乘着重做就干脆切换到ldap, ...

  4. SVN在eclipse的整合应用

    目前很多的Java.Flex.Android开发人员是用eclipse作为开发工具的,本文主要介绍SVN在eclipse平台中的整合应用. 我的eclipse版本是Version: 3.4.2.本身没 ...

  5. 相机拍的图,电脑上画的图,word里的文字,电脑屏幕,手机屏幕,相机屏幕显示大小一切的一切都搞明白了!

    相机拍的图,电脑上画的图,word里的文字,电脑屏幕,手机屏幕,相机屏幕显示大小一切的一切都搞明白了! 先说图片X×dpi=点数dotX是图片实际尺寸,简单点,我们只算图片的高吧,比如说拍了张图片14 ...

  6. MySQL的create table as 与 like区别

    对于MySQL的复制相同表结构方法,有create table as 和create table like 两种,区别是什么呢? ? 1 create table t2 as select * fro ...

  7. mysql索引的使用和优化

    参考: http://blog.csdn.net/xluren/article/details/32746183 http://www.cnblogs.com/hustcat/archive/2009 ...

  8. 七牛整合php上传从微信下载接口下载下来的文件

    因为ios系统直接读取不了MP3格式的文件,所以从微信接口下载下来的MP3格式音频上传到七牛后要转码.   Sample code:   public function doMobileUploadT ...

  9. logrotate

    logrotate程序是一个日志文件管理工具.用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到"转储"作用.可以节省磁盘空间. logrotate命令格式:logrot ...

  10. PhpStorm提高效率的使用方法及设置

    快捷键: CTRL + D  复制当前行到下一行 或 复制选中内容到选中内容之后 CTRL + Y  删除当前行或选中内容所涉及的行 CTRL + R  替换 CTRL + F  查找 ALT + 上 ...