2.objot例の注入


直接コードを入力します.2つのサービスクラスがDoを続行しているとします(「objot例のコンテナ」を参照).それぞれDoUserとDoBizです.DoUserではDoBizを参照する必要があります.コードは次のとおりです.
///doUser.javaファイル
package objot.sample.service;

import objot.container.Inject;
/**
*     
* @author adun
*/
public class DoUser extends Do {
/**
*     DoBiz,    @Inject  
*/
@Inject
public DoBiz db;

public void operate() {
   db.doSth();
}
}

///doBiz.javaファイル
package objot.sample.service;
/**
*       
* @author adun
*/
public class DoBiz extends Do {
public void doSth() {
   System.out.println("    ");
}
}

これらのサービスをコンテナに追加すると、次のコードで自由に使用できます.
//Sample.java
package objot.sample;

import java.lang.reflect.Method;

import objot.aspect.Aspect;
import objot.aspect.Weaver;
import objot.container.Bind;
import objot.container.Container;
import objot.container.Factory;
import objot.sample.service.Do;
import objot.sample.service.DoUser;
import objot.sample.service.Sign;
import objot.util.Class2;
import objot.util.Mod2;
/**
*      
* @author adun
*/
public class Sample {
public static void main(String[] args) throws Exception {
   //      
   Factory factory = new Factory();
//    Do            
   for(Class<?> c : Class2.packageClasses(Do.class)) {
    //         abstract
    if (!Mod2.match(c, Mod2.ABSTRACT) ) {
      factory.bind(c);
    }
   }
   //    c,c     null
   Container c = factory.create(null);
  
   //          DoUser   
   DoUser du = c.get(DoUser.class);
   du.operate();
}
}

実行結果:
操作の開始
本例では主にサービス間相互参照の解決策を示し,@Injectの使用についてはobjotドキュメントまたはソースコードを参照する.