Spring AOP

来源:互联网 发布:电影php用什么打开 编辑:程序博客网 时间:2024/05/22 00:47
spring - aop 使用方式总结


方式一:接口


  前置增强      MethodBeforeAdvice


  后置增强      AfterReturningAdvice


  异常抛出增强  ThrowsAdvice


  环绕增强      MethodInterceptor


  注意:还需要在applicationContext.xml文件中进行aop相关的配置


        <aop:config>
<aop:pointcut expression="execution(public void *User())" id="addoptpointcut"/>
<aop:advisor advice-ref="logbefore" pointcut-ref="addoptpointcut" />
</aop:config>


        <aop:config>
<aop:pointcut expression="execution(* spring_basic.UserService.*(..))" id="userServiceOptPointcut"/>
<!-- 
<aop:advisor advice-ref="exceptionAdvice" pointcut-ref="userServiceOptPointcut" />
-->
<aop:advisor advice-ref="logger" pointcut-ref="userServiceOptPointcut" />
</aop:config>


方式二:注解


  前置增强      @Before("execution(* service.*.*(..))")


  后置增强      @AfterReturning(pointcut="execution(* service.*.*(..))", returning="result")


  异常抛出增强  @AfterThrowing(pointcut="execution(* service.*.*(..))", throwing="ex")


  环绕增强      @Around("execution(* service.*.*(..))")


  注意:还需要在applicationContext.xml文件中添加如下配置


        <aop:aspectj-autoproxy></aop:aspectj-autoproxy>


方式三:Scheme


  首先:添加普通的类,里面按要求编写方法


  public class Logger {


public void before(JoinPoint jp){


}

public void after(JoinPoint jp, Object result){


}

public void aterThrowing(JoinPoint jp, Exception ex){


}

public Object aroundExecute(ProceedingJoinPoint pjp) throws Throwable{


}


  }


  其次:在applicationContext.xml中配置aop-aspect相关的配置


        <aop:config>
<aop:pointcut expression="execution(* service.*.*(..))" id="optpointcut"/>

<aop:aspect ref="mylogger">
<aop:before method="before" pointcut-ref="optpointcut" />
<aop:after-returning method="after" returning="result" pointcut-ref="optpointcut" />
<aop:after-throwing method="aterThrowing" throwing="ex" pointcut-ref="optpointcut" />
<aop:around method="aroundExecute" pointcut-ref="optpointcut"/>
</aop:aspect>

</aop:config>
原创粉丝点击