`
woshixushigang
  • 浏览: 578045 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

aop

 
阅读更多

AOP(Aspect-Oriented Programming,面向方面编程):解决非业务逻辑功能的实现。

 

AOP是OOP的延续,利用AOP可以对将日志记录,性能统计,安全控制,事务处理,异常处理,跟踪,性能的优化,和监

 

控,持久化,资源池,如数据库连接池的管理系统统一的认证、权限管理等应用系统的异常捕捉及处理,针对具体行业应用

 

的横切行为,可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。通

 

过这种机制可以将业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时

 

提高了开发的效率。 

  

1、关注点
1)核心关注点(OOP):关注系统的业务逻辑
2)横切关注点(AOP):关注系统级服务,比如事务、安全、日志
2、方面(Aspect):将散落在各处的代码规整到一处形成一个模块,这个模块称为方面。
3、连接点(Joinpoint):程序执行过程中的某一点,比如方法的调用、异常的抛出。
4、增强(Advice):为某个目标对象增加额外的功能,在spring中增强是通过拦截器实现的。
1)前增强拦截器:在目标对象方法执行之前执行的拦截器。
实现的接口:MethodBeforeAdvice
<!-- 目标对象 -->
<bean name="target" class="com.briup.aop.OrderServiceImpl"></bean>
<!-- 拦截器对象 -->
<bean name="advice" class="com.briup.aop.before.LoggerBeforeAdvice"></bean>
<!-- 创建目标对象的代理对象,注意在调用时调用的是代理对象,而不是目标对象 --
>
<bean name="proxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<!-- 注入目标对象 -->
<property name="target">
<ref bean="target"/>
</property>
<!-- 注入拦截器的名字,而不是拦截器对象 -->
<property name="interceptorNames">
<list>
<value>advice</value>
</list>
</property>
<!-- 注入代理对象需要实现的接口名称 -->
<property name="proxyInterfaces">
<list>
<value>com.briup.aop.IOrderService</value>
</list>
</property>
</bean>
2)后增强拦截器:在目标对象方法执行之后执行的拦截器。
实 抪_______现的接口:AfterReturningAdvice
3)环绕增强拦截器:在目标对象方法执行之前和之后都执行的拦截器。
实现的接口:MethodInterceptor
4)抛出增强拦截器:在目标对象方法执行时抛出异常才执行的拦截器。
实现的接口:ThrowsAdvice
5、切入点(Pointcut):一组连接点,如果有选择性的拦截目标对象中的方法的话需要定义切
入点。
为拦截器(advice)定义切入点从而产生增强器(advidor):
org.springframework.aop.support.RegexpMethodPointcutAdvisor
<!-- 拦截器:拦截目标对象的所有方法 -->
<bean name="advice" class="com.briup.aop.before.LoggerBeforeAdvice"></bean>
<!-- 增强器:拦截目标对象的部分方法 -->
<bean name="advisor"
class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice">
<ref bean="advice"/>
</property>
<property name="patterns">
<list>
<!-- .:通配一个字符(任意字符);*:通配前一个字符若干次 -->
<value>.*save</value>
<value>.*find</value>
</list>
</property>
</bean>
6、目标对象(Target Object):需要被增强功能的对象称之为目标对象,也被称为被增强或被
代理对象。
7、代理对象(Proxy Object):为目标对象增加额外功能之后产成的新的对象,主要负责调用
拦截器和目标对象。
1)产生代理对象的两种机制:
1.java中的动态代理:产生代理对象需要和目标对象实现共同接口;
2.第三方的cglib库:产生的代理对象是目标对象的子类对象。
2)Spring提供的专门用来产生代理对象的类:
org.springframework.aop.framework.ProxyFactoryBean
3)自动代理:不需要写配置信息就能产生代理对象
1. org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator
特点: a. 只能注入增强器,对拦截器不起作用
b. 不灵活:代理配置文件中所有的目标对象
2. org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator
特点: a. 对拦截器、增强器都起作用
b. 灵活:可选择性的代理配置文件中的目标对象
8、织入(Weaving):为目标对象增加额外功能从而产生代理对象的过程。

分享到:
评论

相关推荐

    spring-aop.jar各个版本

    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-...

    aop所依赖的所有包

    AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,旨在减少代码的重复性和增强可维护性,特别是在处理系统中的横切关注点时。这些关注点,如日志、事务管理、安全检查等,往往分散在系统的各个部分...

    aopalliance-1.0.jar及aopalliance源码

    **AOP Alliance简介** AOP Alliance是一个开源项目,它的全称是Aspect Oriented Programming(面向切面编程)Alliance,是Java平台上的一个接口集合,为面向切面编程的实现提供了一个统一的API。这个库的主要目的是...

    反射实现 AOP 动态代理模式(Spring AOP 的实现原理)

    面向切面编程(AOP)是一种编程范式,旨在将横切关注点(如日志、安全等)与业务逻辑分离,从而提高模块化。AOP通过预定义的“切面”对横切关注点进行模块化,从而可以在不修改业务逻辑代码的情况下增加新功能。动态...

    aopalliance最新完整jar包

    在Java应用中,aopalliance.jar包扮演着至关重要的角色,它包含了一些核心接口,如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.aop.Advice`,这些接口定义了拦截器和通知的概念,它们是AOP的...

    spring aop jar 包

    Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。这个"spring aop jar 包"包含了实现这一功能所需的类和接口,...

    spring-boot aop

    Spring Boot AOP(面向切面编程)是一种强大的设计模式,它允许我们在不修改现有代码的情况下,插入额外的功能或监控代码。在Spring框架中,AOP主要用于日志记录、事务管理、性能统计等场景。本示例是关于如何在...

    springAOP所依赖的jar包

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它允许程序员定义“切面”,这些切面可以封装跨越多个对象的行为或责任。在Java应用中实现AOP通常需要依赖于一些外部库,这些库在你提供的标题和描述中有所...

    aop开发环境jar包

    在IT行业中,AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,它旨在提高软件的模块化程度,将关注点分离。在Java世界里,AOP常用于处理日志、事务管理、权限检查等横切关注点。当我们谈到“AOP...

    spring-aop-jar

    在IT领域,Spring框架是一个广泛使用的Java应用框架,它提供了许多功能,包括依赖注入、面向切面编程(AOP)等。"spring-aop-jar"这个主题涉及到Spring框架中的核心组件之一——Spring AOP。这里我们将深入探讨...

    开发工具 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-4.3.6.RELEASE...

    spring aop spring aop

    在给出的XML配置中,`&lt;aop:config&gt;`元素开启AOP支持,而`&lt;aop:aspect&gt;`元素用于定义切面,其内部通过`&lt;aop:pointcut&gt;`定义切点,并通过`&lt;aop:before&gt;`和`&lt;aop:after&gt;`指定通知。 为了使用这些配置,我们需要在代码...

    C#版本AOP注入

    在IT行业中,面向切面编程(Aspect-Oriented Programming,简称AOP)是一种设计模式,它旨在提高软件的模块化程度,将关注点分离,使业务逻辑与系统服务(如日志、事务管理、安全控制等)解耦。C#作为.NET框架的主要...

    利用C#实现AOP常见的几种方法详解

    面向切面编程(AOP,Aspect Oriented Programming)是一种编程范式,旨在通过将关注点分离,使得系统设计更加模块化。AOP的核心思想是将应用程序的横切关注点(如日志、事务管理、安全检查等)从核心业务逻辑中解耦...

    springAop与spring定时器

    Spring AOP(面向切面编程)是Spring框架中的一个重要组件,它允许我们在不修改源代码的情况下,通过在程序运行时动态地将代码插入到方法调用中,来实现跨切面的关注点,如日志记录、性能监控、事务管理等。...

    C# .net Aop 动态截获异常

    在.NET开发环境中,C#语言提供了丰富的特性(Attributes)、依赖注入(DI)和面向切面编程(AOP)等机制,使得我们可以构建更加灵活、可维护的代码。本主题将深入探讨如何使用C#和AOP来动态截获异常,以实现更高级别...

    Spring使用AOP的三个jar包

    最后,`aopalliance-1.0.0.jar`是AOP联盟提供的一个接口库,它定义了一些通用的AOP接口,比如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.intercept.MethodInvocation`,使得不同的AOP框架...

    aop@work.rar

    《面向切面编程(AOP)的工作原理与实践》 面向切面编程(Aspect-Oriented Programming,简称AOP)是软件开发中的一个重要概念,它旨在解决程序中的横切关注点,即那些跨越多个模块、类或方法的共同功能,如日志、...

    aopalliance-1.0.jar下载

    《aopalliance-1.0.jar:AOP联盟的核心库解析》 在Java开发领域,面向切面编程(Aspect-Oriented Programming, AOP)是一种重要的编程范式,它旨在将关注点分离,使系统设计更为模块化,降低耦合度。而aopalliance-...

    Spring中的AOP不生效

    ### Spring中的AOP不生效的原因及解决方法 在Java开发中,面向切面编程(Aspect Oriented Programming,简称AOP)是一种重要的编程思想和技术手段,主要用于处理横切关注点问题,如日志记录、性能统计、安全控制、...

Global site tag (gtag.js) - Google Analytics