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>