Spring之AOP基于Xml的配置
基于注解的AOP配置步骤:
- 将目标类和切面类都加入到ioc容器中。
- 告诉Spring那个是切面类–@Aspect
- 在切面类中使用五个通知注解来配置切面中的这些通知方法都何时何地地运行。
- 开启基于注解的AOP功能–
<aop:aspectj-autoproxy />
- 下面是基于xml文件的AOP配置,大致步骤与注解AOP配置相似。
<?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:context="http://www.springframework.org/schema/context"
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/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
<!-- 基于配置的AOP-->
<bean id="myMathCalculator" class="cn.justweb.impl.MyMathCalculator"></bean>
<bean id="BValidateApsect" class="cn.justweb.utils.BValidateApsect"></bean>
<bean id="logUtils" class="cn.justweb.utils.LogUtils"></bean>
<!-- 需要AOP名称空间 -->
<aop:config>
<aop:pointcut expression="execution(* cn.justweb.impl.*.*(..))" id="globalPoint"/>
<!-- 普通前置 ===== 目标方法 =====(环绕执行后置/返回)====s普通后置====普通返回 -->
<!-- 指定切面:@Aspect -->
<aop:aspect ref="logUtils" order="1">
<!-- 配置哪个方法是前置通知;method指定方法名
logStart@Before("切入点表达式")
-->
<!-- 当前切面能用的 -->
<aop:around method="myAround" pointcut-ref="mypoint"/>
<aop:pointcut expression="execution(* cn.justweb.impl.*.*(..))" id="mypoint"/>
<aop:before method="logStart" pointcut="execution(* cn.justweb.impl.*.*(..))"/>
<aop:after-returning method="logReturn" pointcut-ref="mypoint" returning="result"/>
<aop:after-throwing method="logException" pointcut-ref="mypoint" throwing="exception"/>
<aop:after method="logEnd" pointcut-ref="mypoint"/>
</aop:aspect>
<aop:aspect ref="BValidateApsect" order="3">
<aop:before method="logStart" pointcut-ref="globalPoint"/>
<aop:after-returning method="logReturn" pointcut-ref="globalPoint" returning="result"/>
<aop:after-throwing method="logException" pointcut-ref="globalPoint" throwing="exception"/>
<aop:after method="logEnd" pointcut-ref="globalPoint"/>
</aop:aspect>
<!-- 在切面类中使用五个通知注解来配置切面中的这些通知方法都何时何地运行 -->
</aop:config>
<!--注解:快速方便
配置:功能完善;重要的用配置,不重要的用注解;
-->
</beans>