Spring基于注解ehCache缓存整合
注解的使用参照: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缓存整合的更多相关文章
- 缓存初解(三)---Spring3.0基于注解的缓存配置+Ehcache和OScache
本文将构建一个普通工程来说明spring注解缓存的使用方式,关于如何在web应用中使用注解缓存,请参见: Spring基于注解的缓存配置--web应用实例 一.简介 在spring的modules包中 ...
- 缓存初解(五)---SpringMVC基于注解的缓存配置--web应用实例
之前为大家介绍了如何使用spring注解来进行缓存配置 (EHCache 和 OSCache)的简单的例子,详见 Spring基于注解的缓存配置--EHCache AND OSCache 现在介绍一下 ...
- spring和ehcache整合,实现基于注解的缓存实现
要实现基于注解的缓存实现,要求Spring的版本在3.1或以上版本. 首先需要在spring的配置文件中添加对缓存注解的实现: <?xml version="1.0" enc ...
- Spring基于注解的Cache支持
Spring为我们提供了几个注解来支持Spring Cache.其核心主要是@Cacheable和@CacheEvict.使用@Cacheable标记的方法在执行后Spring Cache将缓存其返回 ...
- Spring 基于注解零配置开发
本文是转载文章,感觉比较好,如有侵权,请联系本人,我将及时删除. 原文网址:< Spring 基于注解零配置开发 > 一:搜索Bean 再也不用在XML文件里写什么配置信息了. Sprin ...
- 阶段3 2.Spring_08.面向切面编程 AOP_9 spring基于注解的AOP配置
复制依赖和改jar包方式 src下的都复制过来. 复制到新项目里了 bean.xml里面复制上面一行代码到下面.把aop改成context. 配置spring容器创建时要扫描的包 Service的配置 ...
- 详解Spring MVC 集成EHCache缓存_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 废话少说,直接上代码: ehcache.xml 文件 <?xml version="1.0" ...
- Spring Boot 集成 Ehcache 缓存,三步搞定!
作者:谭朝红 www.ramostear.com/articles/spring_boot_ehcache.html 本次内容主要介绍基于Ehcache 3.0来快速实现Spring Boot应用程序 ...
- (spring-第4回【IoC基础篇】)spring基于注解的配置
基于XML的bean属性配置:bean的定义信息与bean的实现类是分离的. 基于注解的配置:bean的定义信息是通过在bean实现类上标注注解实现. 也就是说,加了注解,相当于在XML中配置了,一样 ...
随机推荐
- handlebars.js 用 <br>替换掉 内容的换行符
handlebars.js 用 <br>替换掉 内容的换行符 JS: Handlebars.registerHelper('breaklines', function(text) { te ...
- JS中的prototype
JS中的phototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个 ...
- EditPlus 3.7.1186 中文版(10月27日更新)重大性能改进,推荐更新!
3.7.* 版的 EditPlus 存在性能问题:加载行数比较多的文档时,要等很长的时间.加载一个十几兆的文本文件,可能需要等十几秒.在编辑窗口内翻页也会有明显的迟滞感.而此前的 3.6 版本并非如此 ...
- Oracle 12c In Memory Option初探
前情提要: Oracle OpenWorld 2013中Larry Ellison爆料的Oracle新特性:Oracle In Memory Database Option 1. 这个新特性将随着12 ...
- uboot补丁的分析
接下来分析一下韦老师的uboot补丁: -------------------------------------------------------------------------------- ...
- git 常用命令及解析 由浅入深
笔者用的是windows系统,不过并没有什么影响. Git 分布式版本控制系统. 为了让初学git的人明白git是干什么的,有什么意义 笔者觉得先来介绍git作为版本控制器是怎么运作的会让大家对后边 ...
- centos7 shell脚本实现随机数
questions: 1.随机数如何获得 2.如何确定随机值的大小是我们所需要的 answers: 1.目前可以通过获取系统时间的毫秒数来得到,毕竟毫秒数还是变化比较快的 可以看到这个速度还是变化很快 ...
- 将光标放到input内容的最后
在使用setSelectionRange方法的时候一定要加setTimeout,否则无效,代码 var num = $('#input_phone').val().length; setTimeout ...
- Mac中安装node.js和npm
换了Mac需要安装noed.js和npm记录一下首先访问node.js官网(https://nodejs.org/en/download/) 点击下载完后,一路点安装 就安装完成了 然后打开-终端-输 ...
- day4总结
函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或 ...