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 AOP更易于学习和集成。 3. **灵活的通知模型**:Spring AOP提供了多种类型的通知,包括around、before、after returning、after throwing等,使得开发者可以根据实际需求选择最适合的...
在本篇博客“Spring基础:AOP编程(4)”中,我们将深入探讨Spring框架中的面向切面编程(Aspect-Oriented Programming,简称AOP),这是一个强大的功能,它允许我们在不修改原有业务代码的情况下,实现对系统中横切...
其中,面向切面编程(Aspect Oriented Programming,简称AOP)是Spring的重要特性之一,它极大地简化了代码中的横切关注点,如日志、事务管理等。本文将深入Spring源码,探索AOP的实现原理。 首先,我们需要理解AOP...
一部分详细分析了Spring的核心:IoC容器和AOP的实现,能帮助读者了解Spring的运行机制;第二部分深入阐述了各种基于IoC容器和AOP的Java EE组件在Spring中的实现原理;第三部分讲述了ACEGI安全框架、DM模块以及Flex...
Spring AOP,全称Aspect Oriented Programming(面向切面编程),是Spring框架的重要组成部分,它扩展了传统的面向对象编程(OOP),使得开发者能够更好地处理系统中的横切关注点,如日志、事务管理、权限控制等。...
Spring AOP,即面向切面编程,是Spring框架的核心组件之一,它允许程序员在不修改原有业务代码的情况下,对程序进行功能增强。本篇文章将详细阐述Spring AOP的基本概念、种类、代理原理、通知类型以及切入点,帮助你...
赠送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-...
### AspectJ in Action: Enterprise AOP with Spring Applications #### 关键知识点概述 1. **Spring-AspectJ集成:**本书重点介绍了Spring框架与AspectJ相结合的技术优势及其在企业级应用中的强大功能。 2. **...
Spring框架是Java开发中不可或缺的一部分,它以其模块化、易用性和灵活性著称。在Spring中,面向切面...通过学习和理解AOP的概念、代理模式以及注解的使用,开发者能够更好地利用Spring框架构建高效、灵活的应用程序。
Spring源码中最难的问题之一是循环依赖问题,当Spring AOP遇上循环依赖时,该如何解决? Spring通过三级缓存机制解决循环依赖的问题。 在Spring中,bean的实例化过程中,会先尝试从三级缓存中获取bean,这也是...
在Spring框架中,面向切面编程(Aspect Oriented Programming,简称AOP)是一种强大的设计模式,它允许我们定义横切关注点,如日志、事务管理、权限检查等,然后将这些关注点与核心业务逻辑解耦。这篇教程将详细讲解...
spring-aop-6.0.2.jar
AspectJ是Java社区中广泛使用的AOP框架之一。在Spring框架中,从2.0版本开始支持两种方式来使用AOP:基于AspectJ注解的AOP以及基于XML配置的AOP。 4. 在Spring中启用AspectJ注解支持 要在Spring应用中使用AspectJ...
Spring是Java企业应用开发的主要框架之一,其架构和设计原理对Java开发者具有重要影响。本文将深入解析Spring架构和设计原理,对Spring的核心概念、架构设计和关键技术点进行详细介绍。 1. Spring架构设计原理 ...
Spring Boot AOP(面向切面编程)是一种强大的设计模式,它允许我们在不修改现有代码的情况下,插入额外的功能或监控代码。在Spring框架中,AOP主要用于日志记录、事务管理、性能统计等场景。本示例是关于如何在...
在Spring框架中,AOP(Aspect Oriented Programming,面向切面编程)是一种强大的设计模式,它允许程序员将关注点从核心业务逻辑中分离出来,如日志、事务管理等。在"day39-Spring 06-Spring的AOP:带有切点的切面...
Spring框架是Java开发中不可或缺的一部分,它通过提供两种核心特性——控制反转(IoC)和面向切面编程(AOP)来简化应用的构建。理解并掌握这两种技术对于任何Java开发者来说都至关重要。 **控制反转(IoC)**,也...
赠送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...