追求代码质量: 用 AOP 进行防御性编程
2009-11-19 00:00:00 来源:WEB开发网自引导 AOP
下载了 AspectJ 后,下一步是创建一个可扩展 OVal GuardAspect 的方面。它本身不需要做什么,如清单 5 所示。请确保文件的扩展名以 .aj 结束,但不要试着用常规的 javac 对其进行编译。
清单 5. DefaultGuardAspect 自引导程序方面import net.sf.oval.aspectj.GuardAspect;
public aspect DefaultGuardAspect extends GuardAspect{
public DefaultGuardAspect(){
super();
}
}
AspectJ 引入了一个 Ant 任务,称为 iajc,充当着 javac 的角色;此过程对方面进行编译并将其编入主体代码中。在本例中,只要是我指定了 OVal 约束条件的地方,在 OVal 代码中定义的逻辑就会编入我的代码,进而充当起前置条件和后置条件。
请记住 iajc 代替了 javac。例如,清单 6 是我的 Ant build.xml 文件的一个代码片段,其中对代码进行了编译并把通过代码标注发现的所有 OVal 方面编入进来,如下所示:
清单 6. 用 AOP 编译的 Ant 构建文件片段<target name="aspectjc" depends="get-deps">
<taskdef resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties">
<classpath>
<path refid="build.classpath" />
</classpath>
</taskdef>
<iajc destdir="${classesdir}" debug="on" source="1.5">
<classpath>
<path refid="build.classpath" />
</classpath>
<sourceroots>
<pathelement location="src/java" />
<pathelement location="test/java" />
</sourceroots>
</iajc>
</target>
更多精彩
赞助商链接