WEB开发网      濠电娀娼ч崐濠氬疾椤愶附鍋熸い鏍ㄧ〒闂勫嫰鏌﹀Ο渚Ц闁诲氦顕ч湁婵犲﹤楠告禍鍓х磼鏉堛劌绗氶柟宄版嚇閹晠宕归銈嗘濠电偞鍨堕幐鎾磻閹捐秮褰掓偐閻戞﹩妫勯梺鎼炲妼鐎涒晝绮嬪澶樻晝闁挎繂鏌婇敃鍌涚厵閻庢稒锚閻忥絾绻濇繝鍐ㄧ伌闁诡垰鍟村畷鐔碱敂閸♀晙绱樺┑鐐差嚟婵儳螞閸曨剚鍙忛柍鍝勬噹缁€澶嬬箾閹存繄锛嶆鐐灲閹綊宕惰濡插鏌涢妸銉ヮ劉缂佸倸绉归弫鎾绘晸閿燂拷 ---闂備焦瀵уú鈺呭箯閿燂拷
开发学院软件开发Java JBOSSAOP学习笔记-依赖注入 阅读

JBOSSAOP学习笔记-依赖注入

 2007-12-23 12:24:44 来源:WEB开发网 闂備線娼уΛ鎾箯閿燂拷闂備礁鎲¢崹鐢垫崲閹扮増鍎嶆い鎺戝€甸崑鎾斥槈濞嗗秳娌紓鍌氱▌閹凤拷濠电姭鎷冮崨顓濈捕闂侀潧娲ゅú銊╁焵椤掍胶鈯曢柕鍥╁仧缁辩偤鏁撻敓锟�闂備線娼уΛ鎾箯閿燂拷  闂備胶枪缁绘鈻嶉弴銏犳瀬闁绘劕鐏氱€氼剟姊洪崹顕呭剰闁逞屽墮缁夊綊寮婚妸褉鍋撻棃娑欏暈闁伙綀浜埀顒傛暬閸嬪﹪宕伴弽褏鏆﹂柨鐕傛嫹
核心提示:依赖注入(Dependency Injection)AOP另外一个有趣的地方就是提供了依赖注入,依赖注入是对象的申明包括信息,JBOSSAOP学习笔记-依赖注入,配置,服务在运行时刻才被自动注入到服务中去, <aop><aspect class="org.jboss.aspects.Inje

依赖注入(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;
...
}


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

(出处:http://www.cncms.com)


Tags:JBOSSAOP 学习 笔记

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接