Spring AOP(二)之AfterReturning增强处理
类似于使用@Before注解可以修饰Before增强处理,使用@AfterReturning可修饰AfterReturning增强处理,AfterReturning增强处理将在目标方法正常完成后被织入。
使用@AfterReturning注解可指定如下两个常用属性。
1) pointcut/value:这两个属性的作用是一样的,它们都属于指定切入点对应的切入表达式。一样既可以是已有的切入点,也可直接定义切入点表达式。当指定了pointcut属性值后,value属性值将会被覆盖。
2) returning:该属性指定一个形参名,用于表示Advice方法中可定义与此同名的形参,该形参可用于访问目标方法的返回值。除此之外,在Advice方法中定义该形参(代表目标方法的返回值)时指定的类型,会限制目标方法必须返回指定类型的值或没有返回值。
下面的程序定义 了一个AfterReturnig增强处理。
// 定义一个切面
@Aspect
public class LogAspect
{// 匹配com.owenapp.service.impl包下所有类的、// 所有方法的执行作为切入点@AfterReturning(returning="rvt", pointcut="execution(* com.owen.app.service.impl.*.*(..))")// 声明rvt时指定的类型会限制目标方法必须返回指定类型的值或没有返回值// 此处将rvt的类型声明为Object,意味着对目标方法的返回值不加限制public void log(Object rvt){System.out.println("获取目标方法返回值:" + rvt);System.out.println("模拟记录日志功能...");}
}
上面的程序中使用@AfterReturning注解时,指定了一个returning属性,该属性值为rvt,这表明允许在Advice方法(log()方法)中定义名为rvt的形参,程序可通过rvt形参来访问目标方法的返回值。
该应用的目标Bean类,依然是HelloImpl.java和WorldImple.java,这两个类与SpringAOP(一)Before增强处理中的类是一样的,这里就写出,读者可以到前面章节参考。
执行结果如下。
[java] 信息:Loading XML bean definitions from class path resource…
[java]执行Hello组件的foo()方法
[java]获取目标方法返回值:null
[java]模拟记录日志功能…
[java]执行Hello组件的addUser添加用户:owen
[java]获取目标方法返回值:20
[java]模拟记录日志功能…
[java]执行World组件的bar()方法
[java]获取目标方法返回值:null
[java]模拟记录日志功能…
注意:
虽然AfterReturning增强处理可以访问到方法的返回值,但它不可以改变目标方法的返回值。
Spring AOP(二)之AfterReturning增强处理相关推荐
- AOP(二)之AfterReturning增强处理
@AfterReturning @AfterReturning可修饰AfterReturning增强处理,AfterReturning增强处理将在目标方法正常完成后被织入. 使用@AfterRetur ...
- Spring AOP之@Around,@AfterReturning使用、切不进去问题解决
前言 本文主要举几个工作中典型AOP的实操案例,还有经常出现的问题(切不进去,ctrl+左键跳不到被切方法中)等等. 本文对于AOP的实现原理概不讨论,百度一搜有的是. AOP的使用背景和好处 比如A ...
- Spring AOP 增强框架 Nepxion Matrix 详解
点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 概述 在<深入聊一聊 Spring AOP 实现机制>一文中,介绍了 Spring A ...
- spring aop 自定义注解配合swagger注解保存操作日志到mysql数据库含(源码)
spring aop 自定义注解保存操作日志到mysql数据库 一.思路 二.自定义注解 三.编写操作日志 四.编写操作日志切面\增强 五.使用 六.`注意` 一.思路 利用spring aop 对方 ...
- Spring AOP 功能使用详解
前言 AOP 既熟悉又陌生,了解过 Spring 人的都知道 AOP 的概念,即面向切面编程,可以用来管理一些和主业务无关的周边业务,如日志记录,事务管理等:陌生是因为在工作中基本没有使用过,AOP ...
- Spring AOP 快速入门
文章目录 一. 什么是Spring AOP 二. 为什么要学习Spring AOP 三. 学习 Spring AOP 3.1 AOP 的组成 3.1.1 切面 (Aspect) 3.1.2 切点 (P ...
- Spring AOP超详细解析
AOP - 面向切面编程(Aspect Oriented Programming) Spring早期版本的核心功能:管理对象生命周期与对象分配. 即Bean本身的管理创建,以及它整个生命周期里跟其他对 ...
- 面试官:说说Spring AOP、AspectJ、CGLIB ?它们有什么关系?
欢迎关注方志朋的博客,回复"666"获面试宝典 AOP(Aspect Orient Programming),作为面向对象编程的一种补充,广泛应用于处理一些具有横切性质的系统级服务 ...
- 面试官:Spring AOP、AspectJ、CGLIB 都是什么鬼?它们有什么关系?
AOP(Aspect Orient Programming),作为面向对象编程的一种补充,广泛应用于处理一些具有横切性质的系统级服务,如事务管理.安全检查.缓存.对象池管理等. AOP 实现的关键就在 ...
- Spring AOP,AspectJ,CGLIB 有点晕
AOP(Aspect Orient Programming),作为面向对象编程的一种补充,广泛应用于处理一些具有横切性质的系统级服务,如事务管理.安全检查.缓存.对象池管理等.AOP 实现的关键就在于 ...
最新文章
- 精美素材分享:16套免费的扁平化图标下载
- 机器学习流程模板及多模型对比实战梳理
- 元素水平垂直居中的方法
- Thymeleaf语法变量
- Java多线程(五):线程池应该设置多少核心线程数
- NET问答: C# 中是否有最高效的方式对大文件做 checksum ?
- 如何在面试时写出高质量的代码
- python数据科学入门_干货!小白入门Python数据科学全教程
- 使用jsp循环查询mysql_[JSP] 创建mysql数据库利用JSP进行数据库查询(1)
- linux eclipse 菜单,Ubuntu 16.04中的Eclipse Mars菜单栏选项失效
- Python无限播放励志语句
- zookeeper做分布式配置中心
- Compile syslog-win32
- JavaScript---去除字符串中的空格(五种方式,总有一种适合你)
- sql替换字符串中的部分字符
- 啦啦外卖独立版42.0至尊版全开源含vue代码修复app没声音
- 智能决策支持系统(IDSS)
- 什么是客户管理系统?
- SOLIDWORKS在机械设计行业的优势所在
- 海洋地球物理探测方法综述(二)