Spring AOP
Posted StanLong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring AOP相关的知识,希望对你有一定的参考价值。
AOP: Aspect Object Programming 面向切面编程。
AOP的主要功能是让关注点代码和业务代码分离。
关注点即重复的代码,切面即关注点形成的类。
面向切面编程即面向重复的代码编程,在运行的时候业务方法动态植入“切面类代码”。
AOP的相关jar包
1、spring-aop.jar
2、aspectj.jar(aop的依赖包)
3、aspectjweaver.jar
4、aopalliance.jar
XML配置及切入点表达式
<!-- 切面类 --> <bean id="aop" class="com.istonestone.aop"></bean> <!-- AOP配置 --> <aop:config> <!-- 定义一个切入点表达式,拦截哪些方法 “ * com.isoftstone.aop.*.*(..)”格式说明 “修饰符 包名.类名.方法名(方法参数)”即 拦截com.isoftstone.aop包下任何类带任何参数返回修饰符的方法 --> <aop:pointcut id="pt" expression="execution(* com.isoftstone.Dao.*.*(..))"/> <!-- 拦截所有public方法--> <aop:pointcut id="pt1" expression="execution(public * *(..))"/> <!-- 拦截指定方法 ,例如拦截所有save方法--> <aop:pointcut id="pt2" expression="execution(* save*(..))"/> <!-- 拦截指定类的指定方法 --> <aop:pointcut id="pt3" expression="execution(* com.isoftstone.Dao.save(..))"/> <!-- 拦截包及其子包下的所类的所有方法 --> <aop:pointcut id="pt4" expression="execution(* com..*(..))"/> <!--拦截多个表达式 --> <aop:pointcut id="pt5" expression="*execution(* com.isoftstone.Dao.save(..)) or * execution(* com.isoftstone.Dao.update(..))"/> <!-- 取非值 --> <aop:pointcut id="pt6" expression="!execution(* com.isoftstone.Dao.save(..))"/> <aop:aspect ref="aop"> <!-- 环绕通知 --> <aop:around method="around" pointcut-ref="pt"/> <!-- 前置通知,在目标方法调用前执行 --> <aop:before method="begin" pointcut-ref="pt"/> <!-- 后置通知 --> <aop:afater method="after" pointcut-ref="pt"/> <!-- 返回后通知 --> <aop:afater-returning method="afterRetruning" pointcut-ref="pt"/> <!-- 异常通知 --> <aop:afater-throwing method="afterThrowing" pointcut-ref="pt"/> </aop:aspect> </aop:config>
以上是关于Spring AOP的主要内容,如果未能解决你的问题,请参考以下文章