类来实现Tracing接口。 现在,当POJO的一个实例被实例化,TracingMixin的一个实例也将被实例化。 TracingMixin被实例化的方法在<construction>标记中被定义。 你可以在<construction>标记中放入任何一行你想放入的Java代码。
运行例 3
POJO类又被扩展了一些,现在Tracing应用程序接口可以被访问。TracingInterceptor还没有改变,保持在例2中的样子。
public class POJO
{
public POJO() {}
public void helloWorld() { System.out.println(Hello World!); }
public static void main(String[] args)
{
POJO pojo = new POJO();
Tracing trace = (Tracing)this;
pojo.helloWorld();
System.out.println("Turn off tracing.");
trace.disableTracing();
pojo.helloWorld();
System.out.println("Turn on tracing.");
trace.enableTracing();
pojo.helloWorld();
}
}
注意,我们可以把POJO的类型强制转化为Tracing接口。输出为:
Entering constructor: POJO()
Leaving constructor: POJO()
Entering method: helloWorld
Hello World!
Leaving method: helloWorld
Turn off tracing.
Entering method: disableTracing
Leaving method: disableTracing
Hello World!
Turn on tracing.
Entering method: helloWorld
Hello World!
Leaving method: helloWorld
注意,添加到TracingInterceptor的监听器-切入点也应用于被Tracing引入引入的方法。
编译并且运行这个例子:
$ cd oreilly-aop/example3
$ export CLASSPATH=.;jboss-common.jar;jboss-aop.jar;javassist.jar
$ javac *.java
$ java -Djava.system.class.loader=org.jboss.aop.standalone.SystemClassLoader POJO
结论
面向Aspect编程是用于软件开发的一个功能强大的新工具。 使用JBoss 4.0,你可以实现你自己的监听器、元数据和引入,使你的软件开发过程更加高效。 访问www.jboss.org得到更多的详细技术资料。 |