国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JBOSSAOP學習筆記-依賴注入

2019-11-18 16:22:35
字體:
來源:轉載
供稿:網友

依賴注入(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://m.survivalescaperooms.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长丰县| 西畴县| 雅安市| 德钦县| 沙河市| 黑水县| 万宁市| 汝城县| 会宁县| 彭州市| 珲春市| 衡阳市| 鄂尔多斯市| 桓台县| 察雅县| 焉耆| 上饶县| 扎囊县| 班戈县| 阳东县| 即墨市| 武清区| 平谷区| 资阳市| 东辽县| 子长县| 尉氏县| 磐安县| 巴楚县| 阜宁县| 楚雄市| 宝山区| 明光市| 弋阳县| 讷河市| 宁波市| 怀柔区| 东乡县| 绥中县| 布拖县| 福建省|