网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
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,移动开发
本月文章推荐
.使用Servlet发送电子邮件.
.时钟计时器.
.JavaMail快速入门-6.
.J2EE、Linux稳固e-business架构.
.MIDP终端模拟之二:高级终端模拟.
.J2ME性能优化之--方法和内存的评.
.Datagram数据报的接收和发送.
.菜鸟学jsp(三).
.比较J2ME多媒体可选包.
.介绍J2ME通用联网框架.
.使用MIDP底层用户接口API.
.赛车游戏(一)通过蓝牙实现两个手.
.JSP环境基于Session的在线用户统.
.J2ME设备的实际性能.
.ibmwebsphere5.0教材+试题.
.使用EclipseRCP的IBMWorkplaceMa.
.JBoss中服务器的类型.
.Spring Framework中的面向方面编.
.Eclipse与插件(tomcatPlugin Lo.
.XML——连接SQL和Web程序的桥梁.

JBOSSAOP学习笔记-依赖注入

发表日期:2007-12-23



依赖注入(Dependency Injection)
AOP另外一个有趣的地方就是提供了依赖注入。依赖注入是对象的申明包括信息,配置,服务
在运行时刻才被自动注入到服务中去,而不是在你的代码中指定。在J2EE中的              Javax.transaction.TransactionManager 是很多开发者需要用到的,但起始它是有很多实现的。
不同的框架需要不同的实现。使用AOP的注释来实现选择用那个实现就是一个很好的方法。

首先我们还是要定义一个注释。

 package org.jboss.ASPects;

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;

@Target({ElementType.FIELD})
public @interface Inject {}


然后我们实现我们的方面类,这里我们实现的是JBOSS的事务实现,对于不同的服务器提供,你
可以使用不同的实现。

 package org.jboss.aspects;

import org.jboss.aop.joinpoint.*;
import java.lang.reflect.Field;
import javax.transaction.TransactionManager;
import org.jboss.tm.TxManager;

public InjectTMAspect
{
   private TransactionManager tm = TxManager.getInstance();

   public Object Access(FieldReadInvocation invocation)
       throws Throwable
   {
      return tm;
   }

   public Object access(FieldWriteInvocation invocation)
       throws Throwable
   {
      throw new RuntimeException(
          "Setting an @Injected variable is illegal");
   }
}


最后我们定义XML来制定需要触发我们的标签的字段。@Inject标注的字段都将被我们
应用到我们的方面中。

 <aop>
  <aspect class="org.jboss.aspects.InjectTMAspect"/>

  <bind pointcut="field(javax.transaction.TransactionManager *->@org.jboss.aspects.Inject)">
     <advice name="access"
             aspect="org.jboss.aspects.InjectTMAspect"/>
  </bind>
</aop>


现在我们把它用在我们代码中。

 import javax.transaction.TransactionManager;
import org.jboss.aspects.Inject;

public class MyTransactionalCache
{
   @Inject private TransactionManager tm;
...
}


天啊,就这么简单!!!进入讨论组讨论。

(出处:)


上一篇:JBosseclipseEJB学习体会 人气:634
下一篇:JBOSSAOP学习笔记-一些术语 人气:580
浏览全部J2EE/J2ME的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐