プロバイダー
プログラムによって Ebean データベースインスタンスを作成する Guice プロバイダーを作成します。
例 1
DatabaseConfig
と DatabaseFactory
を使用したプロバイダー実装の例。
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
と アクティブレコード
のスタイルの両方を使用できます。