快速业务通道

AOP@Work:介绍AspectJ 5 - AspectJ中的Java 5支持和其他新特性抢鲜看 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

清单 14. 注释风格的类型间声明

/** * This aspect provides default lifecycle management for all * types with the @ManagedComponent annotation. */ @Aspect public class LifecycleManager { ... // default implementations for the state-based lifecycle events @DeclareParents("@ManagedComponent *") class DefaultLifecycleImpl implements Lifecycle { private State state = State.INITIAL; public void initialize() {} public void start() {} public void stop() {} public void terminate() {} public boolean isBroken() { return state == State.BROKEN; } public State getState() { return state; } } ... }

关于注释风格的开发,还有许多其他有趣的问题,例如如何在注释风格的建议 方法的方法体内引用 thisJoinPoint,proceed在 around建议中是如何被支持的 。要获取这些主题的更多信息,请参阅 AspectJ 5 Developers Guide。

装入时织入的增强

装入时织入指的是在类装入 VM 时织入类的过程(比照提前织入而言 —— 例 如编译时织入)。从 1.1 发行版起,AspectJ 就拥有支持装入时织入必需的基础 设施,但是必须编写定制的类装入器,才能真正把 AspectJ 的织入器集成进应用 程序。在 AspectJ 1.2 发行版中,随着添加了 aj脚本,装入时织入得到改进, aj 能够从命令行装入和运行任何 Java 应用程序,也可以在类装入时从 ASPECTPATH织入方面。这个脚本支持 JDK 1.4 以上版本。

但是,命令行脚本不能方便地用在所有环境,特别是不能很好地与 Java EE 应用程序集成。在 AspectJ 5 中,通过放在类路径中的 META-INF/aop.xm, AspectJ 支持对装入时织入进行配置。这是随着 2005 年初与 AspectWerkz 的合 并而带给 AspectJ 的另一个特性。

现在来看看 aop.xml 文件和它的相关元素。

AOP@Work:介绍AspectJ 5 - AspectJ中的Java 5支持和其他新特性抢鲜看(14)

时间:2011-09-04 IBM Adrian Colyer

装入时织入的 XML 规范

aop.xml 文件包含两个主要小节:aspects元素定义用于装入时织入的方面集 合,weaver元素指定控制织入器行为的选项(主要是控制应当织入哪个类型)。 清单 15 显示了一个示例文件:

清单 15. 示例 aop.xml 文件

<aspectj> <aspects> <!-- declare two existing aspects to the weaver --> <aspect name="com.MyAspect"/> <aspect name="com.MyAspect.Inner"/> <!-- define a concrete aspect inline --> <concrete-aspect name="com.xyz.tracing.MyTracing" extends="tracing.AbstractTracing"> <pointcut name="tracingScope" expression="within (com.xyz..*)"/> </concrete-aspect> </aspects> <weaver options="-XlazyTjp"> <include within="com.xyz..*"/> </weaver> </aspectj>

在 aspects元素中,或者通过名称,或者在 aop.xml 文件内部定义,把已知 的方面定义到织入器。后一种技术只能用于扩展现有抽象方面(有一个或多个抽 象切入点):切入点表达式在 XML 中提供。对于“基础设施”方面,这可以是把 配置(切入点表达式)外部化的很好方法。定义了织入器中的方面集合之后,如 果需要(上面代码中没显示),可以使用一个或多个可选的 include和 exclude 元素,控制在织入过程中实际使用哪些方面。默认情况下,织入器使用所有定义 的方面。

weaver元素包含传递给织入器的选项,和应当被织入(通过 include语句)的 类型集合的一个可选定义。如果没有指定 i

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号