提供程序
创建一个 Guice 提供程序,以编程方式创建 Ebean 数据库实例。
示例 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();
}
}
模块绑定
在 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 单例获得,这意味着可以使用 @Inject
和 active record
样式。