2.objot例の注入
直接コードを入力します.2つのサービスクラスがDoを続行しているとします(「objot例のコンテナ」を参照).それぞれDoUserとDoBizです.DoUserではDoBizを参照する必要があります.コードは次のとおりです.
///doUser.javaファイル
///doBiz.javaファイル
これらのサービスをコンテナに追加すると、次のコードで自由に使用できます.
//Sample.java
実行結果:
操作の開始
本例では主にサービス間相互参照の解決策を示し,@Injectの使用についてはobjotドキュメントまたはソースコードを参照する.
///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ドキュメントまたはソースコードを参照する.