AOP五种增强执行时机及@around增强注意事情

AOP的执行时机,一共有五个。分别为前置增强befor,后置增强after,返回后增强afterRunturning,异常后增强afterThorwing,环绕增强around

 

正如他们的名字一样,前置增强是在目标方法执行之前执行,后置增强在目标方法执行之后执行,返回后增强在目标方法执行return之后执行,异常增强则是在目标方法抛出异常后执行,而环绕增强在它修饰的方法中可以同时实现以上所有增强。

前4个增强大致区别也就@后面跟哪个单词的事情。具体体验方法可以参考之前的那篇博客。我们重点看一下Around增强


	@Around(value = "execution(public int com.jd.CalculatorService.*(..))")
	public Object around (ProceedingJoinPoint joinPoint) {
		Object result = null;
		Object target = joinPoint.getTarget();
		String methodName = joinPoint.getSignature().getName();
		
		try {
			try {//前置增强
				System.out.println(target.getClass().getName()+": The"+methodName+"method begins");
	
				result = joinPoint.proceed();
			} finally {//后置增强
				System.out.println(target.getClass().getName()+":The "+methodName+" method ends.");
			}
                //返回增强
                System.out.println(target.getClass().getName()+":Result of the "+methodName+" method:"+result);
		} catch (Throwable e) {//异常增强
			System.out.println(target.getClass().getName()+":Exception of the method "+methodName+": "+e);
		}		
		return result;
	}

around包含的4个增强已经在上面标注了出来。

需要注意的是@Before、@After、@AfterRunning和@AfterThrowing修饰的方法可以通过声明JoinPoint 类型参数变量获取目标方法的信息(方法名、参数列表等信息);@Around修饰的方法必须声明ProceedingJoinPoint类型的参数,该变量可以决定是否执行目标方法。

而中间的result = joinPoint.proceed();这一句是执行目标方法。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值