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

Posted 一码平天下

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[技术分享]20171214_spring_@Before @After @AfterReturning @Around @AfterThrowing spring aop 的advise(通知)(相关的知识,希望对你有一定的参考价值。

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

@Before @After @AfterReturning @Around @AfterThrowing 

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

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

 

我在实践中发现:

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

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

[email protected]是最常用的:

使用 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(通知)(的主要内容,如果未能解决你的问题,请参考以下文章

[技术分享]20171214_oracle_带rownum的查询语句查询出重复数据:原因是order by没有加主键

javassist_1 cannot be cast to jaassist.util.proxy.Proxy

Spring的学习____3.spring配置文件的解析

微信分享

好课分享: 753_Spring 响应式编程实战 百度云

______more time ,the scientists will be able to work out a good solution to the problem