我们可以在应用程序中仅绑定一次所有类型的Google Guice模块吗?

时间:2012-01-30 13:05:55

标签: java dependency-injection guice

public interface Tweeter {
 public void sendTweet(String message);
}

public class SmsTweeter implements Tweeter {
@Override
public void sendTweet(String message) {
    System.out.println("You SMS tweet: "+message);
}
}

import com.google.inject.AbstractModule;

public class TweetModule extends AbstractModule{

@Override
protected void configure() {
    bind(Tweeter.class).to(SmsTweeter.class);       
}
}

import com.google.inject.Guice;
import com.google.inject.Injector;

public class TestTweetClient {
public static void main(String[] args) {
    Injector injector = Guice.createInjector(new TweetModule());
    Tweeter tweeter = injector.getInstance(Tweeter.class);
    tweeter.sendTweet("Hi there");
}
}

每当我调用Guice.createInjector时,我的模块的configure()方法都会运行。它会绑定我的类型。

我们可以让这个configure方法在应用程序中只运行一次吗? (例如:在Web应用程序的启动servlet中)

每次运行此配置方法有什么意义?

1 个答案:

答案 0 :(得分:2)

如果您正在开发Web应用程序,请考虑使用ServletModule