快速业务通道

Java面向方面编程概述 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
inue on. Invoke the real method or constructor. InvocationResponse rsp = invocation.invokeNext(); System.out.println(Leaving + message); return rsp; } }

Java面向方面编程概述(4)

时间:2010-12-05

运行例 2

POJO类已经做了一些扩展,添加了get()和set()方法。

public class POJO { public POJO() {} public void helloWorld() { System.out.println(Hello World!); } private int counter = 0; public int getCounter() { return counter; } public void setCounter(int val) { counter = val; } public static void main(String[] args) { POJO pojo = new POJO(); pojo.helloWorld(); pojo.setCounter(32); System.out.println(counter is: + pojo.getCounter()); } }

TracingInterceptor将监听main()、POJO()和helloWorld()的调用。输出为:

Entering constructor: public POJO() Leaving constructor: public POJO() Entering method: helloWorld Hello World! Leaving method: helloWorld

你可以在下面的网址下载JBoss AOP和示例代码:

(http://www.jboss.org/index.html?module=html&op=userdisplay&id=developers/projects/jboss/aop)。

编译和执行:

$ cd oreilly-aop/example2 $ export CLASSPATH=.;jboss-common.jar;jboss-aop.jar;javassist.jar $ javac *.java $ java -Djava.system.class.loader=org.jboss.aop.standalone.SystemClassLoader POJO

例3.使用引入

如果我们可以关闭或者打开指定实例的跟踪,那么将会非常理想。 JBoss AOP有一个应用程序接口把元数据附加到一个对象实例中,但是让我们假装一个实际的跟踪应用程序接口是最佳解决方案。 在本例中,我们将通过使用一个引入改变POJO类本身的定义。 我们将强制POJO类实现一个跟踪接口,并且提供一个混合类来处理新的跟踪应用程序接口。 下面是这个跟踪接口:

public interface Tracing { public void enableTracing(); public void disableTracing(); }

定义一个混合类

面向形式Tracing接口将在一个混合类中实现。当一个POJO被实例化的时候,这个混合类的一个实例将被附加到这个POJO类中。下面是实现:

import org.jboss.aop.Advised; public class TracingMixin implements Tracing { Advised advised; Public TracingMixin(Object obj) { this.advised = (Advised)obj; } public void enableTracing() { advised._getInstanceAdvisor().getMetaData().addMetaData( "tracing", "filter", true); } public void disableTracing() { advised._getInstanceAdvisor().getMetaData().addMetaData( "tracing", "filter", false); } }

enableTracing ()方法附加过滤属性到这个对象实例上。 disableTracing ()方法做相同的事情,但是把filter属性设置为false。 这两个方法是元数据如何被用于做类级别以外的事情的例子。 元数据也可以应用在实例水平。

Java面向方面编程概述(5)

时间:2010-12-05

附加一个引入

好的,这样我们就已经定义了跟踪接口并实现了混合类。 下一步是把引用附加到POJO类。至于监听器,我们必须在XML中定义另一个切入点。让我们看看这个XML。

<?xml version="1.0" encoding="UTF-8"> <aop> <introduction-pointcut class="POJO"> <mixin> <interfaces>Tracing</interfaces> <class>TracingMixin</class> <construction>new TracingMixin(this)</construction> </mixin> </introduction-pointcut> </aop>

上面的切入点将强制POJO

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号