作为重量级的中文 Java 技术资源中心,IBM developerWorks Java 技术专区已经为广大的 Java (ibm.com/developerworks/cn/java) 开发人员和技术爱好者准备了上千篇精彩的技术文章和教程。其丰富的内容涵盖了从入门到高级、从理论到实践、从基础到前沿、从经验到方法、从工具到产品等等众多 Java 开发者感兴趣的方方面面。

面向方面编程(AOP)技术的时代已经来临,它允许程序员模块化的处理横切关系(即跨越典型职责界限的行为,例如日志记录)。在此,我们为大家推荐一批来自 IBM developerWorks Java 技术专区的相关技术资源,内容包括 AOP 概念介绍、工具使用、最佳实践和应用总结等,是您学习和研究 AOP 相关技术的最佳资源!

特色专栏

AOP@Work 专栏
AOP@Work 专栏是为具有一定面向方面编程背景、并准备扩展或者加深他们知识的开发人员准备的。每一位为这个系列撰稿的作者,都在面向方面编程方面处于领导地位或者拥有这方面的专业知识。许多作者都是本系列中讨论的项目或者工具的开发人员。

特别推荐

AOP 介绍
本教程介绍 AOP 及其基本概念。AOP 及其相关工具使您可以将基本横切关注点(如日志记录和安全)的代码,与程序的核心应用逻辑相分离。AOP 通过使代码更具有可读性、更不容易出错以及更容易设计和维护,改善了代码质量。

AOP 解决紧密耦合的难题
许多 Java 开发人员已经接受了面向方面编程(AOP)的非强制性风格和灵活性,特别是在用于建立高度松散和可扩展的企业系统时。在本文中,您将看到 AOP 的功能设计概念之一(静态横切)如何把可能是一大堆混乱的紧密耦合的代码转变成一个强大的、可扩展的企业应用程序。

AOP 工具比较
AOP 技术的时代已经来临,但是怎样才能为项目选择正确的工具呢?在本系列文章中,面向方面(aspect-oriented)的编程专家 Mik Kersten 将比较 4 个领先的 AOP 工具(AspectJ、AspectWerkz、JBoss AOP 和 Spring AOP),帮助大家判断应该选择哪一个工具。

介绍 AspectJ 5
AspectJ 5 是 Java 平台上面向方面编程前进的一大步。AspectJ 5 主要是对 Java 5 中引入的新 Java 语言特性(包括注释和泛型)提供支持。另外,AspectJ 5 还包含没有捆绑到 Java 5 中的新特性,例如编写方面使用的基于注释的风格、改进的装入时织入以及新的方面实例化模型。本文中,该项目的首席开发人员 Adrian Colyer将向您介绍 AspectJ 5 语言和包含 AspectJ 编译器及相关工具的版本。

用 AspectJ 和 Spring 进行依赖注入
依赖注入和面向方面编程是互补的技术,所以想把它们结合在一起使用是很自然的。请跟随作者一起探索两者之间的关系,并了解怎样才能把它们组合在一起,来促进高级的依赖注入场景。

用 AspectJ 增强设计模式
设计模式长期以来一直是一些经验丰富的开发人员工具箱中的重要组成部分。不幸的是,因为模式可以影响多个类,所以它们也是侵入性的、难于使用(和重用)。在这篇文章中,将介绍 AOP 是怎样通过根本转变模式实现来解决这一问题的。

AOP 和元数据:完美的匹配
本文中,我们将对新的元数据功能进行概念性介绍,并展示在加入了元数据注释后,AOP 可以在什么地方获得最大的好处。然后分五步完成一个设计改造,从一个无元数据的 AOP 实现开始,最终得到一个结合了 Participant 设计模式与注释者-供应者(annotator-supplier)方面的 AOP。

对方面进行单元测试
AOP 使编写特定于应用程序的横切关注点测试比任何时候都要容易了。要了解其原因以及如何实现,请听作者介绍测试面向方面的代码所具有的好处,并展示在 AspectJ 中测试横切行为的样式。

面向方面的编程 ( AOP ):它的好处是什么?
本文来自于 Rational Edge:关于面向方面的编程的大多数介绍,都是建立在技术可行的有限环境的基础之上,而忽略了 AOP 的实际价值。这篇文章提供了将 AOP 技术应用于软件开发项目的一系列实际的例子。

AOP 在大规模软件开发项目中应用的尝试与思考
本文的写作源于一个真实的大型软件开发项目,我们努力尝试在这个项目中推广应用 AOP。在此我们将对曾经面临过的一些实际问题与困难进行分析,试图引发关于面向方面软件开发(AOSD)的一些更深层次的思考。本文的作者将站在开发者的角度做出客观的判断,既不是 AOP 的狂热鼓吹者,同样也不是 AOP 反对阵营的一员。因此可以视作来自 Java 开发者对 AOP 技术应用的客观分析和建设性意见。