提供程序

创建一个 Guice 提供程序,以编程方式创建 Ebean 数据库实例。

示例 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();
  }
}

模块绑定

在 Guice 模块中使用 eager singleton 绑定提供程序,以便在启动时立即创建 EbeanServer。

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

注入和 ActiveRecord

只要在 Guice 提供程序中使用了 ServerConfig.setRegister(true)ServerConfig.setDefaultServer(true),那么创建的 EbeanServer 实例也可以通过 Ebean 单例获得,这意味着可以使用 @Injectactive record 样式。