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

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

使用:

  1、在pom.xml中添加依赖

     <dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.9.1</version>
</dependency>

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

  <?xml version="1.0" encoding="UTF-8"?>
<ehcache updateCheck="false">
<diskStore path="java.io.tmpdir"/>
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
/>
       <!--这个名称会用到-->
<cache name="myCache"      
maxElementsInMemory="10000"
eternal="false"
overflowToDisk="true"
timeToIdleSeconds="30"
timeToLiveSeconds="60"
memoryStoreEvictionPolicy="LFU"
/>
</ehcache>

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

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

  4、在service层添加注解

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

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

  创建表:freeUrl

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

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

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

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

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

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

  3、编写拦截器代码

    public class LoginInterceptors extends HandlerInterceptorAdapter{
private Logger log = LogManager.getLogger(LoginInterceptors.class);
@Resource
private FreeUrlService freeUrlService; @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
//获取项目路径
String contextPath = request.getContextPath();
//获取访问路径
String requestPath = request.getServletPath(); HttpSession session = request.getSession(); //查询免认证路径
List<FreeUrl> list = freeUrlService.findAll();
for (FreeUrl freeUrl : list) {
//如果请求路径为免认证路径则放开
if(freeUrl.getUrl().equals(requestPath)){
return true;
}
}
return false;
}
}

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. 云硬盘error、error deleting、deleting状态(数据库基本操作小记)

    起因是发现云硬盘显示删光了,但还是创建不了新的云硬盘,在api节点上用cinder list可以看到已经没有硬盘了,但是创建硬盘时,还是会提示配额满了,这是因为数据库里的记录没有更新,对数据库的操作记 ...

  2. 渗透日记-利用SQLMAP伪静态注入

    今日找到一个网站,做下安全检测,url是这样的: 不是传统的.php结尾,所以很多人认为这个不能注入,其实伪静态也能注入的,这个url虽然做了伪静态,但是还是需要传递参数到数据库去查询的,试试能否注入 ...

  3. Meteor全栈开发平台 - 不仅仅是前端

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .网站上有对应每一 ...

  4. C#如何反射出委托的签名,如何使用反射调用委托

    本文阐述C#中如何反射出委托的签名,假如我们有委托FooDelegate定义如下 delegate double FooDelegate (string param, bool condition); ...

  5. 腾达和小云无线路由中继(WISP)解决

    记录一下: ============================================ A路由为主路由-接光纤 (小云智能路由) B路由为中继放大(腾达),B路由的电脑 有线连接,网卡设 ...

  6. 捷波朗 jabra BT3030 蓝牙耳机

    蓝牙版本V2.0 通话时间 8小时 按键说明:轻敲 快按轻敲两下 在1.5秒内快速按两下按 大约 1秒钟按住 大约 4秒钟 充电提示绿灯闪亮 正在充电持续绿灯 已完全充满电 检查电量按 音量上调(+) ...

  7. JQuery常用方法一览

    $(”p”).addClass(css中定义的样式类型); 给某个元素添加样式 $(”img”).attr({src:”test.jpg”,alt:”test Image”}); 给某个元素添加属性/ ...

  8. 漫谈单点登录(SSO)(淘宝天猫)

    1. 摘要 ( 注意:请仔细看下摘要,留心此文是否是您的菜,若浪费宝贵时间,深感歉意!!!) SSO这一概念由来已久,网络上对应不同场景的成熟SSO解决方案比比皆是,从简单到复杂,各式各样应有尽有!开 ...

  9. 在Linux上配置Zabbix的环境

    useradd -s /bin/false zabbix mkdir /usr/local/zabbix_agent mv /home/zihexin/zabbix_agents_3.2.0.linu ...

  10. git管理测试生产环境代码

    利用post-update实现简单钩子 #!/bin/bash cd /www/test || exit #进入指定的目录 unset GIT_DIR #清楚环境变量 git checkout mas ...