Documentation / Setup / Guice
Provider
Create a Guice Provider that programmatically creates an Ebean database instance.
Example 1
Example provider implementation using DatabaseConfig and 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);
}
}
Example 2
Example provider implementation using Ebean that implicitly creates the
default EbeanServer using ebean.properties.
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();
}
}
Module bind
In the Guice module bind the provider using eager singleton so that the EbeanServer is created eagerly at startup.
// bind the provider as eager singleton
bind(EbeanServer.class).toProvider(EbeanServerProvider.class).asEagerSingleton()
Inject and ActiveRecord
As long as ServerConfig.setRegister(true) and ServerConfig.setDefaultServer(true)
are used in the Guice provider then the EbeanServer instance created is also available via the Ebean
singleton and that means both @Inject and the active record style can be used.