用AOP自动管理Session数据
来源:互联网 发布:c语言点滴 epub 编辑:程序博客网 时间:2024/05/01 13:07
在互联网应用开发中,由于涉及到分布式运算,一般来说都是不使用容器默认的Session管理的,如Tomcat。因为这些容器的Session管理,默认是基于单机的(Tomcat可以配置为用Memcache管理Session,这里不谈)。这种情况下,我们一般用Redis之类的高速缓存来保存Session,然后把SessionId通过Cookie下发到浏览器。
那么在编程的时候,大量方法需要读取SessionId,然后从Redis读取Session内容,这样就有大量的模板代码要写,即使你封装起来成为一个方法,也至少要调用一次。
我们可以用Spring的AOP来解决,首先定义一个Around的AOP,拿到他的ProceedingJoinPoint参数,从这个参数获取切面方法中是否有SessionUser对象,如果有,则读取后放入,这样在Controler里面就可以直接拿到Session对象。
@Around("execution(* cn.*.controler..*.*(..)) && args(sessionId)",argNames="sessionId") public void onHttp(ProceedingJoinPoint joinPoint,String sessionId){ Object[] args=joinPoint.getArgs(); for(int i=0;i<args.length;i++){ if(args[i] instanceof SessionUser){ args[i] = getSessionUserBySessionId(sessionId); } } try { joinPoint.proceed(args); } catch (Throwable throwable) { throwable.printStackTrace(); }}
Controler方法类似如下
@RequestMapping("/usr/edit")public String userEdit(@CookieValue String sessionId,SessionUser sessionUser){ }
0 0
- 用AOP自动管理Session数据
- python requests 自动管理cookie, session保持连接,抓取数据后结束
- AOP后置通知多线程查询不到session内的数据
- 用threadLocal管理 session
- laravel开发之数据分页、Session管理
- 用spring-session来管理http session
- 利用Spring自定义AOP进行Session超时自动跳转到登录页面
- 用 ThreadLocal 管理用户session
- 用 ThreadLocal 管理用户session
- 用 ThreadLocal 管理用户session
- 用 ThreadLocal 管理用户session
- 用 ThreadLocal 管理用户session
- 用 ThreadLocal 管理用户session
- 用 ThreadLocal 管理用户session
- springMVC,aop管理log4j,把当前session信息和错误信息打印到日志
- Session管理
- Session管理
- session管理
- MYSQL 百万条记录全文检索中文解决方案
- Hadoop Yarn的工作流程
- 编写开源库并发布到JitPack.io
- UNIX下利用OpenSSL对大文件进行AES加解密
- 第13篇研究webrtc官网(二)ninja安装(一)及安卓一对一测试问题
- 用AOP自动管理Session数据
- CSS选择器
- LeetCode笔记:58. Length of Last Word
- 最小生成树 kursal算法
- 康拓展开
- 堆-及其基本操作
- 最简单的驱动hello.c与Makefile模板
- 每天10道Java面试题
- javascript中主要事件