AOP(Aspect Oriented Programming)早已不是什么新鲜的概念,但有趣的是,除了事务(transaction), 日志(Log)等寥寥几个样板应用之外,我们似乎找不到它的用武之地。http://canonical.iteye.com/blog/34941
很多人的疑惑是我直接改代码就行了,干吗要用AOP呢?AOP的定义和实现那么复杂,能够提供什么特异的价值呢?
Witrix平台依赖于AOP概念来完成领域模型抽象与模型变换,但是在具体的实现方式上,却与常见的AOP软件包有着很大差异。http://canonical.iteye.com/blog/542622
AOP的具体技术内容包括定位和组装两个部分。简化切点定位方式和重新规划组装空间,是Witrix中有效使用AOP技术的前提。
在Witrix平台中,对于AOP技术的一种具体应用是支持产品的二次开发。在产品的实施过程中,经常需要根据客户的特定需求,修改某些函数的实现。我们可以选择在主版本代码中不断追加相互纠缠的if-else语句,试图去包容所有已知和未知的应用场景。我们也可以选择主版本代码和定制代码独立开发的方式,主版本代码实现逻辑框架,定制代码通过AOP机制与主版本代码融合,根据具体场景要求对主版本功能进行修正。AOP的这种应用与所谓的横切概念是有所区别的。典型的,一个横切的切点会涉及到很多类的很多方法,而函数定制则往往要求准确定位到某个业务对象的某个特定的业务方法上。传统AOP技术的切点定义方式并不适合这种精确的单点定位。在Witrix平台中,我们通过直接的名称映射来定义切点。例如,修正spring中注册的MyObject对象的myFunc方法,可以在app.aop.xml文件中增加如下标签
<myObject.myFunc>
在原函数执行之前执行
<aop:Proceed/> <!-- 执行原函数内容 -->
在原函数执行之后执行
</myObject.myFunc>
[spring对象名.方法名]这种映射方法比基于正则字符串匹配的方式要简单明确的多。spring容器本身已经实现了对象的全局管理功能,spring对象名称必然是唯一的,公开发布的,相互之间不冲突的,没有必要再通过匹配运算重新发现出它的唯一性。
对于一些确实存在的横切需求,我们可以通过Annotation机制来实现切点坐标标定,将复杂的切点匹配问题重新划归为[对象名.方法名]。
@AopClass({"myObject","otherObject"})
class SomeClass{
@AopMethod({"myFunc","otherFunc"})
void someFunc(){}
}
针对以上对象,在app.aop.xml文件中可以定义
<I-myObject.I-myFunc>
....
</I-myObject.I-myFunc>
分享到:
相关推荐
**Spring AOP应用Demo** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要模块,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。这个Demo是针对Spring AOP的...
**Spring AOP 应用详解** Spring AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它提供了一种在程序运行时动态插入代码的能力,以实现跨切面的关注点,如日志、事务管理、权限控制...
Spring AOP(面向切面编程)是Spring框架中的一个重要组件,它允许我们在不修改源代码的情况下,通过在程序运行时动态地将代码插入到现有代码中来实现关注点的分离。这种技术通常用于日志记录、性能监控、事务管理等...
主要内容包括Spring的发展历程、优势、核心结构、IoC高级应用、AOP应用、声明式事务支持等。 适合人群:Java开发工程师,尤其是对Spring框架有一定了解并希望深入研究其内部机制和技术实现的中级及以上水平的研发...
在本次“Spring及AOP应用(事务与集成)培训”中,我们将深入探讨Spring的核心特性,特别是面向切面编程(AOP)以及事务管理和集成方面的知识。 首先,Spring的核心概念是依赖注入(Dependency Injection,DI)。通过...
囊括了最实用的AOP应用。 XPage 一个非常方便的fragment页面框架。 XUpdate 一个轻量级、高可用性的Android版本更新框架。 XHttp2 一个功能强悍的网络请求库,使用RxJava2 + Retrofit2 + OKHttp组合进行封装。 ...
在Vs2019中编写C# Unity AOP应用,首先我们需要了解几个关键概念: 1. **切面(Aspect)**:切面是AOP的核心,它封装了跨越多个对象的横切关注点。例如,日志记录就是一个典型的横切关注点,它可能需要在多个类的...
本资料"Java进阶之SpringAOP应用共16页.pdf"深入探讨了Spring AOP在实际开发中的应用和实现原理,旨在提升Java开发者的技能水平。 首先,理解AOP的基本概念至关重要。AOP是一种编程范式,它将关注点分离为不同的...
下面我们将详细探讨这个简易的Android AOP应用框架,以及如何利用它来提升开发效率。 首先,让我们理解什么是AOP。面向切面编程是将关注点分离的一种方法,将核心业务逻辑与横切关注点(如日志、事务管理等)解耦。...
通过上述步骤,你可以创建一个简单的Spring AOP应用,实现对特定方法的调用进行日志记录。当然,AOP的潜力远不止于此,你可以根据实际场景扩展通知类型,或者创建更复杂的切入点表达式,以实现更细粒度的控制。 在...
该框架采用Java和Kotlin语言编写,是一款轻量级的Android AOP应用解决方案,源码总共有139个文件,涵盖了51个Java源文件、28个XML配置文件、20个PNG图片文件、11个Gradle脚本文件以及其他类型的文件,旨在提供最实用...
本书以AOP基础理论为主线,首先讲解AOP的产生与发展、为什么要应用AOP、AOP的核心概念,然后详细讲解AspectWerkz、AspectJ、Spring框架的AOP应用开发技术。 随书附赠的光盘内容为本书开发的案例程序包。本书内容循序...
《开发者突击:精通AOP整合应用开发(AspectWerkz+Aspectl+Spring)》以AOP基础理论为主线,首先讲解AOP的产生与发展、为什么要应用AOP、AOP的核心概念,然后再详细讲解AspectWerkz、AspectJ、Spdng框架的AOP应用开发...
Spring框架是目前Java开发中使用最广泛的应用程序框架之一,...最后,通过应用这些AOP概念,开发者可以将横切逻辑从业务逻辑中分离出来,提高代码的模块化,简化代码维护,最终达到使应用程序更易于理解和维护的目的。
本书以AOP基础理论为主线,首先讲解AOP的产生与发展、为什么要应用AOP、AOP的核心概念,然后详细讲解AspectWerkz、AspectJ、Spring框架的AOP应用开发技术。 随书附赠的光盘内容为本书开发的案例程序包。本书内容循序...
XAOP一个轻量级的AOP(Android)应用框架,囊括了最实用的AOP应用。心动不如行动,还不赶紧点击,体验一下吧!关于我X系列库快速集成为了方便大家快速集成X系列框架库,我提供了一个空壳模版供大家参考使用: : 特色...
在本示例中,"springaop.zip" 包含了一个使用XML配置的Spring AOP应用实例,可以直接运行,配合相关的博客文章学习效果更佳。 在Spring AOP中,我们首先需要了解几个核心概念: 1. **切面(Aspect)**:切面是关注...
Autofac提供注册拦截器和定义切入点的方式,使得AOP应用更加灵活。 4. **Castle Dynamic Proxy**:这是一个开源库,可以在运行时动态创建具有额外行为的代理类。许多DI容器(如Autofac、Ninject)都使用它来实现AOP...
总的来说,这个AOP应用旨在提高代码的可读性和可维护性,通过将日志和性能监控的代码抽取到切面,使得业务代码更为简洁,专注于核心功能。在实际开发中,这样的设计对于系统监控和问题排查具有很大的帮助。