注释驱动的 Spring cache 缓存介绍

注释驱动的 Spring cache 缓存介绍

ID:40853385

大小:100.58 KB

页数:26页

时间:2019-08-08

注释驱动的 Spring cache 缓存介绍_第1页
注释驱动的 Spring cache 缓存介绍_第2页
注释驱动的 Spring cache 缓存介绍_第3页
注释驱动的 Spring cache 缓存介绍_第4页
注释驱动的 Spring cache 缓存介绍_第5页
注释驱动的 Spring cache 缓存介绍_第6页
注释驱动的 Spring cache 缓存介绍_第7页
注释驱动的 Spring cache 缓存介绍_第8页
注释驱动的 Spring cache 缓存介绍_第9页
注释驱动的 Spring cache 缓存介绍_第10页
资源描述:

《注释驱动的 Spring cache 缓存介绍》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、注释驱动的Springcache缓存介绍介绍spring3.1激动人心的新特性:注释驱动的缓存,本文通过一个简单的例子进行展开,通过对比我们原来的自定义缓存和spring的基于注释的cache配置方法,展现了springcache的强大之处,然后介绍了其基本的原理,扩展点和使用场景的限制。通过阅读本文,你可以短时间内掌握spring带来的强大缓存技术,在很少的配置下即可给既有代码提供缓存能力。6 评论:赵才文,技术经理2013年3月15日·内容概述Spring3.1引入了激动人心的基于注释(anno

2、tation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如EHCache或者OSCache),而是一个对缓存使用的抽象,通过在既有代码中添加少量它定义的各种annotation,即能够达到缓存方法的返回对象的效果。Spring的缓存技术还具备相当的灵活性,不仅能够使用SpEL(SpringExpressionLanguage)来定义缓存的key和各种condition,还提供开箱即用的缓存临时存储方案,也支持和主流的专业缓存例如EHCache集成。其特点总结如下:·通过少量的配

3、置annotation注释即可使得既有代码支持缓存·支持开箱即用Out-Of-The-Box,即不用安装和部署额外第三方组件即可使用缓存·支持SpringExpressLanguage,能使用对象的任何属性或者方法来定义缓存的key和condition·支持AspectJ,并通过其实现任何方法的缓存支持·支持自定义key和自定义缓存管理者,具有相当的灵活性和扩展性本文将针对上述特点对Springcache进行详细的介绍,主要通过一个简单的例子和原理介绍展开,然后我们将一起看一个比较实际的缓存例子,最

4、后会介绍springcache的使用限制和注意事项。OK,Let’sbegin!回页首原来我们是怎么做的这里先展示一个完全自定义的缓存实现,即不用任何第三方的组件来实现某种对象的内存缓存。场景是:对一个账号查询方法做缓存,以账号名称为key,账号对象为value,当以相同的账号名称查询账号的时候,直接从缓存中返回结果,否则更新缓存。账号查询服务还支持reload缓存(即清空缓存)。首先定义一个实体类:账号类,具备基本的id和name属性,且具备getter和setter方法清单1.Account.j

5、avapackagecacheOfAnno;publicclassAccount{privateintid;privateStringname;publicAccount(Stringname){this.name=name;}publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=na

6、me;}}然后定义一个缓存管理器,这个管理器负责实现缓存逻辑,支持对象的增加、修改和删除,支持值对象的泛型。如下:清单2.MyCacheManager.javapackageoldcache;importjava.util.Map;importjava.util.concurrent.ConcurrentHashMap;publicclassMyCacheManager{privateMapcache=newConcurrentHashMap();pub

7、licTgetValue(Objectkey){returncache.get(key);}publicvoidaddOrUpdateCache(Stringkey,Tvalue){cache.put(key,value);}publicvoidevictCache(Stringkey){//根据key来删除缓存中的一条记录if(cache.containsKey(key)){cache.remove(key);}}publicvoidevictCache(){//清空缓存中的所有记录cache.c

8、lear();}}好,现在我们有了实体类和一个缓存管理器,还需要一个提供账号查询的服务类,此服务类使用缓存管理器来支持账号查询缓存,如下:清单3.MyAccountService.javapackageoldcache;importcacheOfAnno.Account;publicclassMyAccountService{privateMyCacheManagercacheManager;publicMyAccountService(){cach

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。