码迷,mamicode.com
首页 > 编程语言 > 详细

[技术分享]20171214_spring_@Before @After @AfterReturning @Around @AfterThrowing spring aop 的advise(通知)

时间:2017-12-14 23:53:43      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:bsp   ring   class   col   div   print   object   post   两种   

今天在项目中成功实现了spring aop 。

@Before @After @AfterReturning @Around @AfterThrowing 

这五个是实现spring aop常用的五个注解

相关的注解还有@Aspect @Component @PointCut 

 

我在实践中发现:

1.@Before @After @AfterReturning @Around 这四个通知只有用一种,如果使用两种及以上会发生一些问题。

2.@@PointCut 注解的方法不会被执行,只起到了一个把切面表达式抽象出来的作用。

3.@AfterReturning是最常用的:

使用 JointPoint.getArgs()可以获取执行目标方法时传入的参数。(同@Before @After @Around @AfterThrowing)

@AfterReturning注解中的returning = "object"应该和形参的object名字一致 ,用来接收目标方法的返回值。

@AfterReturning(pointcut="execution(...) " returning="object")
public void afterReturning(JointPoint jp,Object object){ 
//注意这里的object 应该和returning="object"保持一致 System.out.println(object); //object是目标方法返回的参数 System.out.println(jp.getArgs() ); //通过这种方法可以获取目标方法的传入参数 }

 

下面是更具体的内容:

@Aspect
@Componet
public class myPointCut{

  @Before("execution(...) ")
  public void before(){ 
        System.out.println("前置通知:在目标方法执行前执行" ); 
  }
    
  @After("execution(...) ")
  public void after(){ 
        System.out.println("后置通知:在目标方法执行后执行" ); 
  }

  @Around("execution(...) ")
  public void around(){ 
        System.out.println("环绕通知:在目标方法执行前后都执行" ); 
  }

  @AfterReturning(pointcut="execution(...) " returning="object")
  public void afterReturning(JointPoint jp,Object object){ 
     //注意这里的object 应该和returning="object"保持一致   System.out.println(object); //object是目标方法返回的参数   System.out.println(jp.getArgs() ); //通过这种方法可以获取目标方法的传入参数   }   @AfterThrowing("execution(...) ")   public void afterThrowing(){   System.out.println("异常通知:在目标方法发生异常时执行" );   } }

 

[技术分享]20171214_spring_@Before @After @AfterReturning @Around @AfterThrowing spring aop 的advise(通知)

标签:bsp   ring   class   col   div   print   object   post   两种   

原文地址:http://www.cnblogs.com/dingzheng/p/8040361.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!