<aop:config>
<!--配置切面 -->
<aop:aspect id="logAdvice" ref="logger">
<!-- 配置通知的类型,并且建立通知方法和切入点方法的关联
通知类型:
前置:在切入点之前执行的通知方法 before
后置:在切入点之后执行的通知方法 after-returning
异常:在切入点执行产生异常时执行的通知方法 after-throwing
最终:在切入点执行最后(无论是否有异常),都会执行的方法 after
环绕:把所有通知和切入点执行的逻辑都自己实现。实现的方式如下:
try{
前置
切入点(pjp.proceed(args))
后置
}catch(Exception e){
异常
}finally{
最终
}
-->
<aop:before method="printLog" pointcut="execution(* com.itheima.service.Impl.*.*(..))"></aop:before>
</aop:aspect>
</aop:config>
<aop:config>
<!--放在这里是全局引用-->
<aop:pointcut id="pt1" expression="execution(* com.itheima.service.Impl.*.save*(..))"></aop:pointcut>
<!--配置切面 -->
<aop:aspect id="logAdvice" ref="logger">
<!-- 配置通知的类型,并且建立通知方法和切入点方法的关联-->
<aop:before method="beforePrintLog" pointcut-ref="pt1"></aop:before>
<aop:after-returning method="afterReturningPrintLog" pointcut-ref="pt1"></aop:after-returning>
<aop:after method="afterThrowingPrintLog" pointcut-ref="pt1"></aop:after>
<aop:after-throwing method="afterPrintLog" pointcut-ref="pt1"></aop:after-throwing>
<!--放在这里是当前切面引用-->
<aop:pointcut id="pt1" expression="execution(* com.itheima.service.Impl.*.save*(..))"></aop:pointcut>
</aop:aspect>
</aop:config>