私は依存性注入で新しくなりました& Guice in Java。私は適切なオブジェクトを動的に注入することに問題があります。例えばGuice Dynamic Binding、インスタンスを取得
:
public class Main {
public static void main(String[] args) {
Injector injector = Guice.createInjector(new MyModule());
StudentStore studentStore = injector.getInstance(StudentStore.class);
RegisterService registerService = injector.getInstance(RegisterService.class);
registerService.register("First User");
registerService.register("Second User");
//Now I would like to use OfflineRegisterService.class - is it good idea to do it here?
registerService = injector.getInstance(OfflineRegisterService.class);
registerService.register("Third User");
registerService.register("Fourth User");
System.out.println(studentStore.size());
}
}
それは動作しますが、それを行うための最善のアイデアですか?
public class MyModule extends AbstractModule {
@Override
protected void configure() {
bind(StudentStore.class).to(MemoryStudentStore.class);
bind(RegisterService.class).to(OnlineRegisterService.class);
}
}
あなたの例は混乱しています。これは静的なコードのように見えます。私はプロパティファイル(または同様のもの)を使用して、ユーザー1〜4の名前付きバインディングを作成し、登録するプロパティのRegisterServiceに注釈を付けて、コンストラクタでそれを実行します。 – pandaadb