首先要理解AOP的概念:(点击这里)https://blog.csdn.net/q982151756/article/details/80513340
概述:博主的理解就是,其实就是对目标方法(point cut)前后添加其他的方法(advice)
以下是配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd">
<!-- 配置bean -->
<bean id="arithmeticCalculator" class="com.spring.aop.impl.xml.ArithmeticCalculatorImpl"></bean>
<!-- 配置切面的bean -->
<bean id="loggingAspect" class="com.spring.aop.impl.xml.LoggingAspect"></bean>
<bean id="validationAspect" class="com.spring.aop.impl.xml.ValidationAspect"></bean>
<!-- 配置AOP -->
<aop:config>
<!-- 配置切点表达式 -->
<aop:pointcut expression="execution(* com.spring.aop.impl.xml.ArithmeticCalculator.*(..))" id="pointcut"/>
<!-- 配置切面及通知,使用order指定优先级 -->
<aop:aspect ref="loggingAspect" order="1">
<!-- 环绕通知 -->
<!--
<aop:around method="aroundMethod" pointcut-ref="pointcut"/>
-->
<!-- 前置通知 -->
<aop:before method="beforeMethod" pointcut-ref="pointcut"/>
<!-- 后置通知 -->
<aop:after method="afterMethod" pointcut-ref="pointcut"/>
<!-- 异常通知 -->
<aop:after-throwing method="afterThrowing" pointcut-ref="pointcut" throwing="e"/>
<!-- 返回通知 -->
<aop:after-returning method="afterReturnning" pointcut-ref="pointcut" returning="result"/>
</aop:aspect>
<aop:aspect ref="validationAspect" order="2">
<!-- 前置通知 -->
<aop:before method="validateArgs" pointcut-ref="pointcut"/>
</aop:aspect>
</aop:config>
</beans>
配置说明:
目标方法定位: execution(* com.spring.aop.impl.xml.ArithmeticCalculator.*(…)) 其中 . 后面可以改成你自己的方法 * 代表这个下面所有的方法,(…) 代表任意参数数量和类型。
你方法的aop:pointcut 的别名: id = pointcut
添加的方法来源: loggingAspect
添加的方法:
<aop:before method=“beforeMethod” pointcut-ref=“pointcut”/>
<aop:after method=“afterMethod” pointcut-ref=“pointcut”/>
<aop:after-throwing method=“afterThrowing” pointcut-ref=“pointcut” throwing=“e”/>
<aop:after-returning method=“afterReturnning” pointcut-ref=“pointcut” returning=“result”/>
如果还不理解,可以跳转.到这里