Logo

Spring Aop AfterReturning接收返回值

photo

2020年12月26日

包结构:

 

Spring.xml

 

 

UserDao.java

 

 

测试类Main方法

 

 

LogAspect.java

 

测试结果:

 

 

 

@AfterReturning标签属性分析:

         value值: 可以写Aop的表达式,如execution、args、within等,多个之间使用&& || !作为连接; 也可以使用引用其他Pointcut;

         pointcut值:和value值用法一样

         returning值:给被增强方法返回值取个名字,给后面引用;

         argNames值:方法入参的名字,Spring4.2.x测试时候发现写不写都可以实现Aop,具体看下面测试.

 

         如果只需要记录方法返回值的话,只需要配置returning属性,方法入参配置上对应返回值类型或其父类即可,写Object应该肯定没问题吧;

 

         知识点1.returning属性的值和增强方法的入参是按照名称来匹配;

         当增强方法入参名称和returning不一致时,就会抛出异常Returning argument name ‘val’ was not bound in advice arguments

 

        

        

         知识点2. 增强方法入参不能出现多余(JoinPoint不算多余),否则会匹配不上; 如果想要获取被增强方法入参,方式有两种,下面有介绍.

 

 

         知识点3. 增强方法入参类型必须是 被增强方法返回值类型或者父类,否则增强方法无法执行; void类型的方法返回值是null,可以使用Object类型来接收

    

         知识点3查看源码可以得到解释, AspectJAfterReturningAdvice的afterReturning会先判断类型是否匹配来决定执行不执行后置增强;

 

 

知识点4. 看到博文下在讨论能否改变方法返回值类型,下面讨论给出了答案:

String类型的无法改变返回值类型,而对象类型的可以调用set方法将返回值属性改变;

讨论地址:https://blog.csdn.net/owen_william/article/details/50812771#commentsedit

 

  测试如下:

         ResultStr.java

     

 

UserDao.java

 

 

增强类和测试方法

 

 

知识点5.获取被增强方法入参的几种方式:

方式一.使用JoinPoint获取入参

 

        

方式二. 注解添加写argNames属性值

 

分析: 被增强方法addUser我们用A来简称,增强方法getReturning用B来简称, A的入参和B的args()内参数按照顺序来对应;  args()内参数+returning值  与argnames中参数按照名称来对应,  而argNames的值与B入参按照顺序来对应,这点从下面名称不匹配可以证实;

 注意:argNames中一定要写returning的值

 

 

方式三.注解不写argNames属性值

 

 

分析:不写argNames属性值时候,  addUser仍然简称A方法,getReturning方法简称B方法, A方法的入参和B方法的args()括号内参数按照顺序对应, args()括号内参数和B方法入参按照名称对应就可以实现后置增强得到入参了.

 

 

橙子主题打折出售

其实我不卖,主要是这里是放广告的,所以就放了一个
毕竟主题都没做完,卖了也是坑.

购买它
所有附件
该文章没有附件.
本文为原创文章,请注意保留出处!

热门文章

无法握住的故土 在我们心灵最温暖的角落,总有一寸土地是属于故乡的。虽然我们看似已远离故土,可骨子里对故乡的依恋却是从未冷却过。我们无论漂泊他乡,还是在繁华都市平步青云,可故乡的悠悠情思总会潜入梦乡与你缠绵。是儿时那一缕缕茉莉的清香萦绕在梦境,也是邻家那已锈迹斑斑的铁壶里,开出艳丽的花儿在梦的边缘摇曳。故土就这样根深蒂固地在我们的灵魂深处烙下深深的印记。 作者:Pastore Antonio
1596 浏览量
EWS(Exchange Service)基本使用(获取个人会议,会议室会议内容,会议室列表,发送会议,修改会议,删除会议) 最近公司要求和exchange服务对接,所以稍微研究了一下官方文档,做出以下总结,欢迎大家补充。先...EWS(ExchangeService)基本使用(获取个人会议,会议室会议内容,会议室列表,发送会议,修改会议,删除会议) 作者:Pastore Antonio
1585 浏览量
Sql Server 部署SSIS包完成远程数据传输 本篇介绍如何使用SSIS和作业完成自动更新目标数据任务。**温馨提示:如需转载本文,请注明...SqlServer部署SSIS包完成远程数据传输 作者:Pastore Antonio
1579 浏览量
SQL Server AG集群启动不起来的临时自救大招 背景前晚一朋友遇到AG集群发生来回切换不稳定的情况,情急之下,朋友在命令行使用命令重启WSFC集群...SQLServerAG集群启动不起来的临时自救大招 作者:Pastore Antonio
1573 浏览量
windows 下安装 memcahce 官网上并未提供Memcached的Windows平台安装包,我们可以使用以下链接来下载,你需...windows下安装memcahce 作者:Pastore Antonio
1567 浏览量