码迷,mamicode.com
首页 > 编程语言 > 详细

使用Spring提供的缓存抽象机制整合EHCache为项目提供二级缓存

时间:2017-09-17 01:35:46      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:abs   缓存   obj   int   步骤   service   put   object   流行   

 

Spring自身并没有实现缓存解决方案,但是对缓存管理功能提供了声明式的支持,能够与多种流行的缓存实现进行集成。

Spring Cache是作用在方法上的(不能理解为只注解在方法上),其核心思想是:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值存放在缓存中,等到下次利用同样的参数调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回。所以在使用Spring Cache的时候我们要保证我们的缓存的方法对于相同的方法参数要有相同的返回结果

 
1.适合和不适合保存到二级缓存的数据

①适合

[1]经常被查询,很少或几乎不修改的
[2]不是特别重要,允许出现偶尔的并发问题
[3]不会被其他应用程序修改的

②不适合

[1]经常被修改
[2]特别重要,不允许出现任何的并发问题,例如:财务数据
[3]有可能被其他应用程序修改
2.Survey项目中适合存入二级缓存的数据
①验证权限时查询的Res对象
Res getResByServletPath(String servletPath);
②参与调查相关方法
EngageService.PageInfo<Survey> getSurveyPage(Integer userId, boolean completed, Integer pageNum);
EngageService.Survey getSurveyDeeply(Integer surveyId);
3.使用Spring提供的缓存抽象机制整合EHCache
①用伪代码展示缓存切面的工作原理
try {
    //1.尝试从缓存中获取数据
    Object value = cacheMap.get(key);
    
    //2.判断value是否为null
    if(value == null){
        //3.实际执行目标方法
        value = 目标对象.目标方法();
        
        //4.将目标方法执行结果存入缓存
        cacheMap.put(key,value);
    }
    
    //5.返回value
    return value;
}catch(Exceptin e){
}
②Spring缓存抽象使用时的注意事项
[1]如果一个方法在输入相同的情况下输出不一定相同,那么不能使用该机制。
int count = userService.getRegistUserCount(boolean active);
[2]目标方法必须每一次都实际被调用,那么不能使用该机制使用了缓存抽象机制后目标方法理论上只会被执行一次
 

 Cache Abstraction

 

4.使用步骤
①创建键生成器类,实现org.springframework.cache.interceptor.KeyGenerator接口
需要在Spring配置文件中配置对应的bean
  
②引入EHCache环境
[1]加入jar包
[2]引入EHCache自身的配置文件,同时创建一个具名的缓存区域
③在Spring配置文件中配置缓存抽象对EHCache的整合
 
 

使用Spring提供的缓存抽象机制整合EHCache为项目提供二级缓存

标签:abs   缓存   obj   int   步骤   service   put   object   流行   

原文地址:http://www.cnblogs.com/limingxian537423/p/7531649.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!