扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:Adrian Colyer译者 俞黎敏 来源:infoq.com 2007年11月18日
关键字:
在本页阅读全文(共10页)
理论说得够多了……让我们看一下你在企业应用程序中实际上如何以及为什么要使用AOP的一些例子。开始AOP,并不一定是一种肯定一切或者否定一切的爆炸性方法。采用可以分阶段进行,每个阶段都为增加的技术暴露回报以更多的益处。
建议的采用路线图是只开始使用Spring提供的开箱即用的方面(例如事务管理)。许多Spring用户将已经在这么做了,但多半不太欣赏AOP被“背地里”使用着。根据这一点,你可以实现在使用Spring AOP的Web、服务和数据访问层中可能会有的任何定制横切需求。
实现影响领域模型的特性必需使用AspectJ。你听到这句话时可能感到惊讶:有大量的AspectJ方面对于你在开发时都非常有帮助,而且不影响在产品中以任何方式运行的应用程序。这些方面可以增加很多价值,并且采用风险非常小,因此建议用它们开始AspectJ。根据这一点,你可以选择通过AspectJ实现“基础结构的”需求——典型的实例为剖析(profiling)、跟踪(tracing)、错误处理(error-handling)等等。随着你越来越习惯于AspectJ和所配套的工具,最终你可以用方面在领域逻辑自身中开始实现功能。
关于AOP采用路线图的其他信息,请见《Eclipse AspectJ》一书中的第11章,或者developerWorks AOP@Work系列中“Next steps with aspects”一文。这两个资源都专门关注AspectJ,而我在这里则正在讨论同时使用Spring和AspectJ。
让我们依次看一下这每一种采用阶段。
当在一个工程中使用AOP时,首先要做的最有意义的事是定义一组切入点表达式,描述你应用程序中的不同模块或者层。这些切入点表达式在采用的所有不同阶段中都将很有帮助,并且定义一次将减少重复,改善代码的清晰度。如果我们用@AspectJ符号编写这些切入点,它们就可以通过任何常规的Java 5编译器进行编译。利用一般的AspectJ语言关键字也可能编写相同的东西,用ajc编译源文件,并将生成的.class文件添加到classpath中。我将用@AspectJ作为开始Spring AOP的两种方法中更为容易的那一种。许多读者将会熟悉Spring所携带的“jpetstore”范例应用程序。我已经稍微重写了这个应用程序,给它增加了一些方面(本文稍后会讨论到)。以下是在pet store中捕捉主要层和模块的“SystemArchitecture”方面的开头部分:
@Aspect public class SystemArchitecture { |
既然我们已经有了谈论应用程序(“inServiceLayer”、“businessOperation”等等)的术语,让我们用它来做一些有意义的事情吧。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者