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="org.springframework.aop.framework.ProxyFactoryBean">
3 <property name="proxyInterfaces">
4 <value>ITest</value>
5 </property>
6 <property name="target">
7 <ref local = "test"/>
8 </property>
9 <property name="interceptorNames">
10 <value>myPotincutAdvisor</value>
11 </property>
12 </bean>
13
14 <bean id="test" class="Test"/>
15
16 <bean id="MyInterceptor" 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>
分析代码:
1、<bean id="myAOPProxy"
class="org.springframework.aop.framework.ProxyFactoryBean">声明注入了代理实例myAOPProxy。
2、 proxyInterfaces声明将被代理接口ITest。
3、 target声明被代理目的类。
4、 interceptorNames设置拦截器为myPotincutAdvisor。
5、 patterns为拦截器设置配匹方式,即在所被配匹成功的方法被调用时执行拦截器内容。
该配置文件,指定要加载一个接口与ITest相匹配的bean。该bean随后被关联到Test实现类。看起来好像是费了很大力气只为了加载一个简单的bean并调用一个方法,但是这个配置文件只是使 Spring框架可以透明地对应用程序应用其组件的众多特性的一个体现。
分享到:
相关推荐
赠送jar包:spring-aop-5.0.10.RELEASE.jar; 赠送原API文档:spring-aop-5.0.10.RELEASE-javadoc.jar; 赠送源代码:spring-aop-5.0.10.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.0.10.RELEASE....
Spring基础:Spring AOP简单使用
Spring AOP面向方面编程原理:AOP概念,主要介绍面向对象的概念及原理,及作者的一些理解。
Spring_AOP_学习小结 Spring_AOP_学习小结 Spring_AOP_学习小结 Spring_AOP_学习小结
一部分详细分析了Spring的核心:IoC容器和AOP的实现,能帮助读者了解Spring的运行机制;第二部分深入阐述了各种基于IoC容器和AOP的Java EE组件在Spring中的实现原理;第三部分讲述了ACEGI安全框架、DM模块以及Flex...
赠送jar包:spring-aop-5.2.0.RELEASE.jar; 赠送原API文档:spring-aop-5.2.0.RELEASE-javadoc.jar; 赠送源代码:spring-aop-5.2.0.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.2.0.RELEASE.pom;...
spring-aop-1.1.1.jar spring-aop-1.2.6.jar spring-aop-1.2.9.jar spring-aop-2.0.2.jar spring-aop-2.0.6.jar spring-aop-2.0.7.jar spring-aop-2.0.8.jar spring-aop-2.0.jar spring-aop-2.5.1.jar spring-aop-...
hualinux spring XML开发系列之 hualinux spring 3.15:Spring AOP 文字版本
When to use Spring AOP and AspectJ AOP? Expert author Ramnivas Laddad shows how to combine technologies such as Spring, Hibernate, Swing, and JDBC with AspectJ. The book fully covers the latest ...
Spring源码最难问题:当Spring AOP遇上循环依赖.docx
spring aop spring aop spring aop spring aop spring aop spring aop spring aop spring aop spring aop
使用Spring配置文件实现AOP
NULL 博文链接:https://foreversky12.iteye.com/blog/2341332
赠送jar包:spring-aop-5.3.12.jar; 赠送原API文档:spring-aop-5.3.12-javadoc.jar; 赠送源代码:spring-aop-5.3.12-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.3.12.pom; 包含翻译后的API文档:spring...
SPRING:AOP
赠送jar包:spring-aop-5.0.8.RELEASE.jar; 赠送原API文档:spring-aop-5.0.8.RELEASE-javadoc.jar; 赠送源代码:spring-aop-5.0.8.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.0.8.RELEASE.pom;...
《Spring技术内幕:深入解析Spring架构与设计原理》是Spring领域的问鼎之作,由业界拥有10余年开发经验的资深Java专家亲自执笔!Java开发者社区和Spring开发者社区一致强烈推荐。国内第一本基于Spring3.0的著作,从...
赠送jar包:spring-aop-5.3.10.jar; 赠送原API文档:spring-aop-5.3.10-javadoc.jar; 赠送源代码:spring-aop-5.3.10-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.3.10.pom; 包含翻译后的API文档:spring...
开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE...
Spring框架的关键组件之一是面向方面编程(AOP)框架。 面向方面的编程需要将程序逻辑分解成不同的部分。 此教程将通过简单实用的方法来学习Spring框架提供的AOP/面向方面编程。