学习Spring之九:AOP in Spring
Spring IoC和 Spring AOP组合,一起形成了Spring,这样一个有机整体,使得构建轻量级的J2EE架构成为可能,而且事实证明,非常有效。没有Spring IoC的Spring AOP是不完善的,没有Spring AOP的Spring IoC是不健壮的。 本文研究Spring框架中的面向方面编程(Aspect-Oriented Programming,AOP),进而通过例子解析如何运用Spring中的所有通知类型和切入点来实现更实用的方面和面向方面设计模式。
AOP概念:
Advice:如何将before通知、afterReturning通知和afterThrowing通知声明为bean。
Pointcut:如何声明静态切入点逻辑以将XML Spring Bean Configuration文件中的所有内容联系在一起。
Advisor:关联切入点定义与通知bean的方式。
Spring AOP是使用代理来完成的,Spring 两种方式:JDK动态代理,需要设定一组代理接口;CGLIB 代理,可代理接口和类。Spring提供了5种Advice类型:Interception Around、Before、After Returning、Throw和Introduction。它们分别在以下情况下被调用:在JointPoint前后、JointPoint前、 JointPoint后、JointPoint抛出异常时、JointPoint调用完毕后。
配置文件:
1 <beans> 2 <bean id="myAOPProxy" class="MethodTimeCostInterceptor"/>17 18 <bean id="myPotincutAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">19 <property name="advice">20 <ref local="MyInterceptor"/>21 </property>22 <property name="patterns">23 <list>24 <value>.*</value>25 <value>.*</value>26 </list>27 </property>28 </bean>29 </beans>