网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > J2EE/J2ME
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.jBPM发送信号,流程进入下一步.
.连接池深入J2EE的连接合用.
.henson.midp.Float浮点类介绍.
.RMS从入门到精通之四.
.超级简单的mvc框架ajf1.2发布.
.应用农历.
.J2ME入门-(7)使用KjavaGUI组件的.
.简单图形验证码的识别.
.EnterpriseJavaBeans导论五.
.创建简单Eclipse插件实现AxisWeb.
.J2EE Web的新变革:Apusic Opera.
.利用Filter压缩HTTP响应.
.JB4 与 WebLogic 的整合.
.Jboss3.0-Tomcat4.03配置-3(综合.
.实例-用JSF实现文件下载.
.J2ME入门-(1)J2ME概述.
.实例说明锚点位置的定义.
.HTML表单Form中的get和post方法.
.Java中的cookie管理方案(3)-与J2.
.为Web 应用程序创建测试用例.

JBOSSAOP学习笔记-Mixin类和多重继承

发表日期:2007-12-23


mixins and IntrodUCtions
很多人说道AOP,都以为AOP就是截取器,切入点表达式,方面和实现(advices)。其实AOP不止这些,另外一个很重要的功能在JBOSS AOP里面就是可以透明的给Java类传入接口。你可以强制一个类实现的接口,甚至你可以附加另外的类(mixins)来实现这个接口。就像C++
里面的多重集成。

引入
首先我们介绍怎么强制现有的类来实现你希望它实现的接口。
首先的例子是让一个非可持久化类实现持久化能力。这对你将是十分有用的代码。

 public class POJO
{
  private String field;
}


要使它可以持久化很简单。
<introduction class="POJO">
   <interfaces>java.io.Serializable</interfaces>
</introduction>


上面的XML定义让AOP框架知道你要把Serializable接口应用到你的类中。在这里你可以自由的增加任何接口到你的类上,只需要添加interfaces元素就可以了。
如果你的类没有实现接口,AOP框架会增加实现的方法给你的类。这些方法会委派给AOP框架,但需要使用截取器或实现来进行维护,否则NullPointerException会抛出。

mixin It Up
引入接口只是限制你,在实现接口时,如果你的类没有实现,就用内部的截取器或实现来实现。这个地方就是Mixin要用的地方了。AOP框架允许你定义Mixin类来实现你要实现的接口。这个类的实例化
将在你首次调用引入接口的方法的时候。

继续我们使用一个Externalizable 类来实现java.io.Externalizable 这个接口。

 public class POJO
{
  private String field;
}


要让他实现externalizable很简单

<introduction class="POJO">
   <mixin>
      <interfaces>
         java.io.Externalizable
      </interfaces>
      <class>ExternalizableMixin</class>
      <construction>new ExternalizableMixin(this)</construction>
   </mixin>
</introduction>


和上面一样这里只要求POJO实现一个接口,你自己可以在这里实现你的很多接口。

这里的class元素定义了实现接口externalizable的Mixin类,POJO来实现。
construction 元素允许你使用JAVA代码来定义实例化Mixin类的时候你想用的方法。JBOSS AOP 会使用一个字段使实例化的POJO持有你的实现类ExternalizableMixin的句柄。这个字段会使用你在construction里提供的代码来进行初始化。上面的this指的就是POJO自身的实例。

最后就是你必须实现Mixin类了。
public class ExternalizableMixin implements java.io.Externalizable
{
   POJO pojo;

   public ExternalizableMixin(POJO pojo)
   {
      this.pojo = pojo;
   }

   public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
   {
      pojo.stuff2 = in.readUTF();
   }
   public void writeExternal(ObjectOutput out) throws IOException
   {
      out.writeUTF(pojo.stuff2);
   }
}

多重继承 Multiple Inheritance
需要注意的一点就是Mixin使你的JAVA在内部实现了多重集成。虽然在外部你不需要直接在XML里面映射多重集成或者声明绑定,但实际上它使你实现了多年以来C++所具有的优点。
虽然多数的专家都反对使用多重集成,但如果恰当的使用抽象的Mixin类来实现多重集成在很多地方对你的设计还是很有帮助的。进入讨论组讨论。

(出处:)


上一篇:JBOSSAOP学习笔记-标签使用(J2SE5.0)中的元数据 人气:588
下一篇:JBOSSAOP学习笔记-AOP基本知识 人气:585
浏览全部J2EE/J2ME的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐