プロバイダー

プログラムによって Ebean データベースインスタンスを作成する Guice プロバイダーを作成します。

例 1

DatabaseConfigDatabaseFactory を使用したプロバイダー実装の例。

import io.ebean.Ebean;
import io.ebean.EbeanServer;
import com.google.inject.Provider;

public class EbeanServerProvider implements Provider<EbeanServer> {

  @Override
  public EbeanServer get() {

    ServerConfig config = new ServerConfig();
    config.setName("pg");
    // load configuration from ebean.properties
    config.loadFromProperties();
    config.setDefaultServer(true);
    ...
    // other programmatic configuration

    return EbeanServerFactory.create(config);
  }
}

例 2

Ebeanを使用したプロバイダー実装の例で、ebean.properties を使用して default EbeanServer を暗黙的に作成しています。

import io.ebean.Ebean;
import io.ebean.EbeanServer;
import com.google.inject.Provider;

public class EbeanServerProvider implements Provider<EbeanServer> {

  @Override
  public EbeanServer get() {

    // EbeanServer configured by ebean.properties
    return Ebean.getDefaultServer();
  }
}

モジュールバインド

EbeanServer がスタートアップ時に熱心に作成されるように、熱心なシングルトンを使用して Guice モジュールでプロバイダーをバインドします。

// bind the provider as eager singleton
bind(EbeanServer.class).toProvider(EbeanServerProvider.class).asEagerSingleton()

注入とアクティブレコード

Guice プロバイダーで ServerConfig.setRegister(true)ServerConfig.setDefaultServer(true) が使用されている限り、作成された EbeanServer インスタンスも Ebean シングルトンから利用可能で、つまり @Injectアクティブレコードのスタイルの両方を使用できます。