spring aop 引用传值时,引用参数不会被改变
来源:互联网 发布:mac如何删除u盘文件 编辑:程序博客网 时间:2024/06/04 19:23
情景:
用sping做rest 接口程序的数字签名验证,本来可以用filter来做,但是想玩一下aop,其实aop确定做起来会好一点,filte主要是对url的过滤处理比较好一点,但对于系统的一些处理,aop还是要好用一点,OK,跳题了。
开始打算用aop增强处理controller层的,但是怎么也配置不好,最后只增强serivce层了
问题描述:
参数的引用递被aop还原.也就是值引用传进去后,方法中改变引用参数的值,返回后,却不生效。
好吧,上代码:
aop类型
/** * 添加操作日志(后置通知) * @param joinPoint * @param rtv * @param annotation * @throws Throwable */@Around(value="allServiceCall()") public ResultBody doAround(ProceedingJoinPoint joinPoint) throws Throwable{ResultBody rb=new ResultBody();if(validateUserKey(rb,joinPoint.getArgs())){return (ResultBody)joinPoint.proceed();}else{return rb;}}
controller层
/** * 获取跟踪列表 * @param dispatchTrack * @param map * @return */@RequestMapping(value ="/track/list", method = RequestMethod.GET)@ResponseBodypublic ResultBody getDispatchTrackListData(String paramStr){ConsignmentTrackLog consignmentTrackLog=JSON.parseObject(paramStr, ConsignmentTrackLog.class);ResultBody rb=new ResultBody(); return consignmentService.getConsignmentTrackLogListData(consignmentTrackLog,rb);}
而我遇到的问题是
执行getConsignmentTrackLogListData(getConsignmentTrackLogListData是用aop增强过的方法)方法中,aop前置改变rb的内容,然后service方法中也看到确定被改变了,
但rb回到controller层时,rb确没有变。但如果我去掉AOP增强,返回到controller时,rb却被改了,是正确定的。
结论:aop引用传值时,引用参数不会被改变
引用:
0 0
- spring aop 引用传值时,引用参数不会被改变
- ECMAScript函数参数只会按值传递,不会按引用传递
- 当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的.
- 当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的.
- 引用和引用参数
- 引用---引用型参数
- 引用--引用作参数
- Java方法强制传递引用参数(做为返回值),改变被传递参数值。
- 引用参数
- 引用参数
- 引用参数
- 引用参数
- 引用参数
- 引用参数&
- Spring循环引用和AOP代理引发的两个问题
- 引用---常引用型参数
- Spring-注入参数详解-[字面值及引用其他Bean]
- 在函数中改变传入的参数值:引用参数的使用
- DBUtils使用详解二
- 我的Android进阶之旅------>Android关于Activity管理的一个简单封装
- 第五章 并发性:互斥和同步
- Quick-Cocos2d-x初学者游戏教程(二)
- Codeforces Round #286 (Div. 2) B. Mr. Kitayuta's Colorful Graph dfs
- spring aop 引用传值时,引用参数不会被改变
- Quick-Cocos2d-x初学者游戏教程(三)
- mysql中SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
- service XXX does not support chkconfig
- Quick-Cocos2d-x初学者游戏教程(四)
- cocos2d-x移植安卓时解决引用sqlite3库问题
- 【asp】 SQLServer OLEDB 连接数据库 代码
- Java格式化详解
- (6) SQL 语句 - 字段类型