1

コンストラクターが注入された引数を受け入れる Guice があります。

@Singleton
public class MyClass {
    private MyConfiguration myConfiguration;

    @Inject
    public MyClass(MyConfiguration myConfiguration) {
        this.myConfiguration = myConfiguration;
    }
}

ここで、これを実行する環境に応じて引数を注入できるようにしたいと考えています。テストでは MyConfiguration オブジェクトを注入したいのですが、本番環境では別のオブジェクトを注入したいと考えています。

MyConfiguration には 2 つのプロバイダーがあります。MyConfigurationProvider は外部構成ファイルを読み取り、そこから構成を取得します。MyConfigurationTestProvider は、すべての設定をハード コードするだけです。

ただし、これを構成する方法がわかりません。次のような Guice モジュールでバインドを試みました。

public class MyGuiceModule extends AbstractModule {
    @Override
    protected void configure() {
       bind(MyConfiguration.class).toProvider(MyConfigurationProvider.class).in(Singleton.class);
    }
}

テストの Guice モジュールでは、次を使用します。

public class MyGuiceTestModule extends AbstractModule {
    @Override
    protected void configure() {
        install(new MyGuiceModule());
        bind(MyConfiguration.class).toProvider(MyConfigurationTestProvider.class).in(Singleton.class);
    }
}

しかし、これにより、複数のプロバイダーをバインドするというエラーが発生しました。

私の質問は、同じオブジェクトに対して異なるプロバイダーを使用する方法は環境によって異なりますか?

どうもありがとう。

4

1 に答える 1