`
hotjava
  • 浏览: 181251 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

AOP的几个基本概念[转]

阅读更多

转自:http://ghostboat.blogbus.com/logs/344871.html

面向对象技术很好地解决了软件系统中角色划分的问题。借助于面向对象的分析、设计和实现技术,开发者可以将问题领域的“名词”转换成软件系统中的对象,从而很自然地完成从问题到软件的转换。然而,问题领域的某些需求却不能用这样的“名词”来描述。

方面(aspect)类似于 Java 编程语言中的类。方面定义切入点和通知(advice),并由诸如 AspectJ 这样的方面编译器来编译,以便将横切(包括动态的和静态的)织入(interweave)现有的对象中。方面的重新组合:在这一步里,方面集成器通过创建一个模块单元—一方面来指定重组的规, 重组过程—一也叫织入(weaving)或结合(integrating)——则使用这些信息来构建最终系统、还拿信用卡的那个例子来说 你可以指定(用某种AOP的实现所提供的语言)每个操作的开始和结束需要记录,并且每个操作在涉及到业务逻辑之前必须通过验证。


一个 连接点(join point) 是程序执行中一个精确执行点,比如类中的一个方法。例如,对象 Foo 中的方法 bar() 就可以是一个连接点。连接点 是个抽象的概念;不用主动定义一个连接点。


一个 切入点(pointcut) 本质上一个用于捕捉连接点的结构。例如,可以定义一个切入点来捕捉对对象 Foo 中的方法 bar() 的所有调用。和连接点相反,切入点需要在方面中定义。


通知(advice) 是切入点的可执行代码。一个经常定义的通知是添加日志记录功能,其中切入点捕捉对对象 Foo 中的 bar() 的每个调用,然后该通知动态地插入一些日志记录功能,比如捕捉 bar() 的参数。


一个关注点(concern)就是一个特定的目的,一块我们感兴趣的区域。

横切关注点(crosscutting concerns):从技术的角度来说,一个典型的软件系统包含一些核心的关注点和系统级的关注点。举个例子来说,一个信用卡处理系统的核心关注点是借贷/存入处理,而系统级的关注点则是日志、事务完整性、授权、安全及性能问题,会在多个模块中出现,使用现有的编程方法,横切关注点会横越多个模块,结果是使系统难以设计、理解、实现和演进。一个典型的企业应用包含许多横切关注点,如验证、日志、资源地、系统管理、性能及存储管理等,每一个关注点都牵涉到几个子系统,如存储管理关注点会影响到所有的有状态业务对象。

关注点实现:各自独立的实现这些关注点,还用上面信用卡的例子,你要实现信用卡处理单元、日志单元和验证单元。


AOP与OOP的区别:在AOP里组合的流向是从横切关注点到主关注点,每个关注点的实现的并不知道是否有其它关注点;而OOP则相反。但是,OOP可以和AOP很好地共存。比如,你可以使用一个混入类来做组合,既可以用AOP实现,也可以用OOP实现,这取决你对AOP的接受程度,在这两种情况下,实现横切关注点的混入类实现都无需知道它自己是被用在类中还是被用在方面中。举个例子来说,你可以把一个日志写入器接口用作某些类的混入类或是用作一个日志方面。

分享到:
评论

相关推荐

    SPRING AOP详细培训视频

    在Spring AOP中,有以下几个核心概念: 1. 切面(Aspect):切面是AOP的核心,它封装了横切关注点,如日志、事务管理等。一个切面可以包含多个通知(advises)和一个或多个切入点(pointcuts)。 2. 通知(Advice...

    深入理解Android之AOP

    在本篇中,我们将深入探讨AOP的基本概念、优势以及在Android开发中的应用,同时与OOP进行比较分析。 首先,面向对象编程(OOP)是一种通过对象来思考问题和组织程序的方法,它把问题分解为各种各样的对象,而对象则...

    SpringAOP.zip

    1. **AOP基本概念**:首先,我们会理解什么是面向切面编程,它与传统的面向对象编程的区别,以及它为何能在解决系统中横切关注点问题上表现出优越性。 2. **Spring AOP实现方式**:Spring提供了两种AOP实现,一种是...

    springboot+aspect实现springaop拦截指定方法.zip

    SpringBoot结合AspectJ实现SpringAOP拦截指定方法的知识点涵盖了多个方面,这包括Spring AOP的基本概念、SpringBoot的应用、切点(Pointcut)与通知(Advice)的定义、自定义注解以及AspectJ的使用。以下是这些知识...

    简易的AOP框架

    在Java中,Spring框架是最著名的AOP实现之一,但这里我们讨论的是一个简易的AOP框架,它可以帮助理解AOP的基本概念和工作原理。 该简易AOP框架包含以下几个关键组件: 1. **配置文件**:这是定义切面(aspect)和...

    AOP的实现机制

    在AOP领域,有几个重要的概念被称为“公民”: - **Joinpoint**:应用程序中的特定位置,例如方法调用、字段访问等。 - **Pointcut**:匹配Joinpoints的规则或标准,定义了哪些Joinpoints会被切面所关注。 - **...

    sqring aop 必须的四个jar包

    Spring AOP的使用通常包括以下几个步骤: - 定义切面(Aspect):切面是切面编程的基本单元,包含切入点和通知。 - 定义切入点(Pointcut):定义一个或多个切入点表达式,指定哪些方法会被切面影响。 - 编写通知...

    spring aop注解版

    首先,让我们理解AOP的基本概念。AOP是一种编程范式,允许程序员定义“切面”,这些切面封装了跨越多个对象和方法的横切关注点。例如,事务管理就是一个常见的横切关注点,它会影响到应用中的多个操作。在Spring AOP...

    AOP需要的Jar包

    本文将详细讲解与标题"AOP需要的Jar包"相关的知识点,包括AOP的基本概念、Spring AOP的实现机制以及相关依赖库的作用。 首先,AOP(Aspect Oriented Programming)是一种编程范式,它允许程序员将关注点分离到单独...

    SSH学习记录(4)-AOP测试

    通常,这样的博客会涵盖以下几个关键点: 1. AOP的基本概念:解释什么是切面、通知(advice)、连接点(join point)、切入点(pointcut)和织入(weaving)。 2. Spring AOP的实现方式:介绍基于代理的AOP(包括...

    spring_AOP.rar_876.aop_java aop_spring_aop

    首先,了解AOP的基本概念。面向切面编程是一种编程范式,旨在减少代码重复,并将关注点分离。它将那些与业务逻辑不直接相关的部分(如日志、异常处理、性能统计等)抽取出来,形成独立的“切面”,然后在运行时动态...

    AOP实现机制和应用的研究

    未来的发展方向可能包括以下几个方面: - **更高级别的抽象**:随着领域特定语言(DSLs)和函数式编程语言的兴起,AOP可能会进一步与其他编程范式融合,提供更高级别的抽象支持。 - **跨语言支持**:目前大多数AOP...

    spring aop xml实现

    首先,我们需要了解AOP的基本概念: 1. 切面(Aspect):一个关注点的模块化,比如日志、事务管理。 2. 切点(Pointcut):定义了在何处应用切面,可以是一个方法、类或包的集合。 3. 通知(Advice):在特定切点...

    Aop所需工具包

    这通常包括以下几个部分: 1. **Spring Framework核心库**:这是基础,包含了AOP模块,提供对切面、通知(advice)、切入点(pointcut)等概念的支持。Spring的主JAR包通常名为`spring-context`和`spring-aop`。 2...

    spring AOP实例代码(带详细的讲解)

    在本实例代码中,我们将深入探讨Spring AOP的基本概念、核心组件以及如何在实际项目中应用。 首先,了解AOP的基本理念是理解其工作原理的关键。AOP是一种编程范式,旨在减少代码重复,提高可维护性和可读性。在传统...

    小马哥讲 Spring AOP 编程思想 - API 线索图.pdf

    上述知识点覆盖了Spring AOP的基本概念、核心组件以及如何通过配置来创建和使用代理对象。通过这些知识的学习和应用,可以更好地实现业务逻辑与非业务逻辑代码的分离,提高代码的可维护性和可重用性。

    spring Aop文档

    在深入了解Spring AOP之前,我们需要了解几个基本的概念: 1. **切面(Aspect)**:封装了横切关注点的模块。在Spring AOP中,切面可以由类或者方法来实现。 2. **连接点(JointPoint)**:程序执行过程中的某个特定点...

    java开发常用jar包之spring--aop.rar

    Spring AOP主要涉及以下几个关键概念: 1. 切面(Aspect):切面是关注点的模块化,比如日志、事务管理等。在Spring中,切面可以由一个或多个通知(advice)和一个切入点(pointcut)定义。 2. 通知(Advice):这...

    spring aop练习

    首先,让我们了解Spring AOP的基本概念。在AOP中,"切面"是关注点的模块化,这些关注点是跨越多个对象的共同行为或关注点,如日志记录。"通知"是指在特定连接点执行的实际代码,它可以是前置通知(在方法调用前执行...

    Spring AOP

    在Spring AOP中,我们主要涉及以下几个核心概念: 1. **切面(Aspect)**:切面是AOP的核心,它封装了横切关注点,如日志、事务等。在Spring中,一个切面可以是一个类,该类包含了通知(advice)和其他元数据。 2....

Global site tag (gtag.js) - Google Analytics