Project(20)——Spring AOP - 统计业务方法的执行时间

Project(20)——Spring AOP - 统计业务方法的执行时间

统计业务方法的执行时间

AOP指的是“面向切面的编程”。

AOP并不是Spring框架的特征,只不过Spring提供了很好的支持,使得AOP更易于实现。

在这里插入图片描述

在使用Spring AOP之前,需要添加AOP相关的依赖:


<dependency>
    <groupId>aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.5.4</version>
    <type>pom</type>
</dependency>

<dependency>
    <groupId>aspectj</groupId>
    <artifactId>aspectjtools</artifactId>
    <version>1.5.3</version>
    <type>pom</type>
</dependency>


接下来,创建cn.tedu.store.aop.TimeElapsedAspect切面类,该切面类的对象将由Spring框架管理,所以,必须在cn.tedu.store包下,且需要添加@Component@Aspect注解:


@Component
@Aspect
public class TimeElapsedAspect{

}

然后,在类中添加切面方法,关于切面方法:

  1. 应该使用public权限;
  2. 可以使用void作为返回值类型,如果是@Around必须使用Object作为返回值类型;
  3. 方法名称可以自由定义;
  4. 参数根据切面的作用范围来决定,例如使用@Around时必须添加ProceedingJoinPoint参数。

所以,在切面类中添加切面方法︰


public void process(ProceedingJoinPoint pjp) throws Throwable{
	    
	    // 记录起始时间
	    long start = System.currentTimeMillis();
	    
	    // 执行任务
	    pjp.proceed();
	    
	    // 记录结束时间
	    long end = System.currentTimeMillis();
	    
	    // 统计耗时
	    System.err.println("耗时:" + (end - start) + "ms.");
	    
	}

最后,还应该确定该切面方法的作用范围,即何时、哪些处理流程中,需要应用这个切面!

根据作用范围,可以使用@Before@After,或使用@Around表示在应用的方法之前和之后都需要执行某些任务。

然后,还需要在@Around注解中配置参数,以决定切面应用于哪里:

在这里插入图片描述

至此,对于应用范围之内所有返回值类型为void的业务方法都可以正常应用切面,如果需要保证其它业务方法也能正常运行,则需要获取方法执行时的返回值,

并且,整个切面方法也需要将返回值类型设置为0bject,并在方法运行结束之前返回以上结果:

在这里插入图片描述

使用@Before表示切面将存于某位置之前,使用@After表示切面将存在于某位置之后,通常,使用@Around可以完全取代@Before@After

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值