SpringMVC Memcached 搭建WEB项目缓存框架
最近做的项目一直在使用memcached作为缓存来缓存各种数据,现在BOSS要在项目上加上缓存。并把任务交给我。便琢磨怎么解决这个问题。
看了很多文章,写的比较详尽靠谱的就是这篇了http://www.cnblogs.com/cczhoufeng/archive/2013/04/09/3009578.html,结合自身项目做出了一些改动,在此分享出来。
该套框架的基本思路是:利用Spring-AOP在项目的DAOImpl层做一个环绕切面,在方法上添加自定义注解实现细粒度的控制,在环绕切面上使用CacheUtils中增强指定方法。CacheUtils的主要功能就是在去访问数据库前先去缓存中查看是否有值,有则直接返回,没有数据则去数据库中查,然后在放入缓存中。而对于删除,修改,增加方法,则需要将缓存中的数据清空。
如何判断某一个方法是该从缓存中查询还是更新缓存,我的方式是自定义了一个注解,手动在所有Dao层实现类的方法上加上注解@Cache表示该方法属于查询方法,@Flush表示该方法不属于查询方法,需要更新缓存中数据。此处又会产生一个问题,更新缓存数据如何实现?借鉴别人的经验,同样我也使用了缓存版本这么一个概念,就是将DaoImpl的包类路径作为versionKey,缓存数据的时候,先查询该方法所在的DaoImpl的Version值,然后以包类路径+方法名+转换为JSON的参数+Version值作为KEY值,talk is cheap show u the code;
配置文件 spring-datasource.xml
注意:在有些情况下,会怎么都不进入Spring的切面中,此时可能的原因容器冲突的原因:SpringMVC的容器依赖于Spring的容器,在SpringMVC的配置文件中最好将DAO层的注解@Repository排除(同理如果SpringAOP的切面配置在Service层,则将@Service注解排除掉),还有就是在实际应用中可能会出现一个问题就是,继承自父类BaseDaoImpl的XxxDaoImpl
SpringMVC Memcached 搭建WEB项目缓存框架的更多相关文章
- springmvc+maven搭建web项目之二 通过另一种方式配置spring
1.创建maven web项目 2. 配置pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x ...
- springmvc+maven搭建web项目
1.创建一个maven project 为spring1 2.进行项目的配置:默认的java 1.5 在properties中选择project facts项目进行配置,反选web之后修改java环境 ...
- 使用Koa2搭建web项目
随着Node.js的日益火热,各种框架开始层出不穷的涌现出来,Node.js也开始逐渐的被应用到处理服务端请求的场景中.搭建Web项目的框架也随之开始出现——express.koa.koa2.egg等 ...
- Spring-Boot快速搭建web项目详细总结
最近在学习Spring Boot 相关的技术,刚接触就有种相见恨晚的感觉,因为用spring boot进行项目的搭建是在太方便了,我们往往只需要很简单的几步,便可完成一个spring MVC项目的搭建 ...
- springmvc 项目完整示例01 需求与数据库表设计 简单的springmvc应用实例 web项目
一个简单的用户登录系统 用户有账号密码,登录ip,登录时间 打开登录页面,输入用户名密码 登录日志,可以记录登陆的时间,登陆的ip 成功登陆了的话,就更新用户的最后登入时间和ip,同时记录一条登录记录 ...
- Spring Boot搭建Web项目常用功能
搭建WEB项目过程中,哪些点需要注意: 1.技术选型: 前端:freemarker.vue 后端:spring boot.spring mvc 2.如何包装返回统一结构结果数据? 首先要弄清楚为什么要 ...
- springBoot 搭建web项目(前后端分离,附项目源代码地址)
springBoot 搭建web项目(前后端分离,附项目源代码地址) 概述 该项目包含springBoot-example-ui 和 springBoot-example,分别为前端与后端,前后端 ...
- 使用idea+springboot+Mybatis搭建web项目
使用idea+springboot+Mybatis搭建web项目 springboot的优势之一就是快速搭建项目,省去了自己导入jar包和配置xml的时间,使用非常方便. 1.创建项目project, ...
- Python-Flask搭建Web项目
最近因项目需要,学习了用flask搭建web项目,以下是自己的使用感悟 Flask框架结构 static:存储一些静态资源 templates:存储对应的view app.py:涉及到页面的跳转,以及 ...
随机推荐
- (莱昂氏unix源代码分析导读-49) 字符缓冲区
by cszhao1980 同块设备一样,对字符设备的输入输出也是通过缓冲区来进行的.使用缓冲区有个额外 的好处,即以缓冲区为界,函数可分为高低两个层次.低层函数负责与实际设备交互, 而高层函数只与缓 ...
- 一种解决Code Map与ReSharper冲突导致Visual Studio 2013 Peek Definition失效的办法
更正 3月6号: 经再次测试,单独使用Code Map或ReSharper,对Visual Studio的Peek Definition无影响,但是两者一起使用时,Peek Definition失效, ...
- AngularJS1
Ⅰ.AngularJS的点点滴滴--引导 AngularJS已经被很多人像炒冷饭一样炒过啦,大部分都是直接复制官方文档没有说明一些注意事项,不过什么都要从头开始吧 ###页面引导实例化 * * * ...
- D14
T1:有点坑的模拟,考心细+代码能力 T2:最小生成树 记得开long long,不然会全WA.. 莫名超时三个点,据学长说可以开并查集优化,叫做按秩排序..=-=现在木有网啊..哪天再看 T3:di ...
- Socket一些常用的方法封装
public class SocketHelper { /// <summary> /// 功能描述:得到一个实例对象 /// </summary> /// <retur ...
- P2P中的NAT穿越方案简介
文章链接: http://www.shipin.it/Index/videolist/id/68.html
- Lak3 Counting(POJ No.2386)
问题描述: 有个大小为N*M的园子,雨后积起了水.八连通的积水被认为是连接在一起的.求出园子里总共有多少水洼. N, M <= 100 输入例: : 问题分析: 八连通即:上.左上.左,左下,下 ...
- 7月22日-奇舞团关于when.js与promise的分享
关于when.js的使用见屈屈的分享 http://www.imququ.com/post/promises-when-js.html 关于promise的实现见月影的分享 http://www.wu ...
- 使用JAVA进行MD5加密后所遇到的一些问题
前言:这几天在研究apache shiro如何使用,这好用到了给密码加密的地方,就碰巧研究了下java的MD5加密是如何实现的,下面记录下我遇到的一些小问题. 使用java进行MD5加密非常的简单,代 ...
- WCF引用方式
WCF之各种WCF引用方式 写在开头:本文内容来自 WCF全面解析中的一个经典例子,如果你已经看过了,那么可以忽略本文,本文旨在和大家分享不一样的WCF使用方法. 准备工作: 1.创建解决方案WCFS ...