[java] Guiceをちょこっと触ってみた。 2009/01/27


対応はJava5以降、アノテーションを使ってます。

重要なアノテーションはずばり

@Inject


参考
シンプルだなと思いました。


以下、コード

package guice;

import com.google.inject.Binder;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.Module;
import com.google.inject.Scopes;

public class TestA {

public static class MyModule implements Module {

public void configure(Binder binder) {
/*
* インターフェイスIContextの実装は、MyContextです。シングルトンで作成
*/
binder.bind(IContext.class).to(MyContext.class)
.in(Scopes.SINGLETON);
}
}

/*
* 実験メイン
*/
public static void main(String[] args) {

/*
* インジェクターを作成します。定義を記述したModuleを使う
*/
Injector injector = Guice.createInjector(new MyModule());
/*
* 注入して作成
*/
A a = injector.getInstance(A.class);

/*
* コンテクストが入ってるか出力してみる
*/
System.out.println(a.context);
}

/*
* インターフェイス
*/
interface IContext {
}

/*
* 実装です。
*/
static class MyContext implements IContext {

public String toString() {
return "my context...";
}
}

static class A {

IContext context;

// アノテーションを忘れずにないと注入されないよ。
@Inject
public void context(IContext context) {
this.context = context;
}
}
}

: