概述

EbeanServer 实例的配置由 ServerConfig bean 定义。它有一系列 getter 和 setter,用于所有可用的配置选项。

在代码方面,一个新的 ServerConfig 实例通过调用 setter 方法或从 ebean.properties 或外部属性加载配置来创建和配置。最后,EbeanServerFactory 用于获取 ServerConfig 并创建一个 EbeanServer 实例。

ebean.properties

ServerConfig.loadFromProperties()ebean.properties 文件加载配置。这可用于通过代码(调用 ServerConfig 上的 setter 方法)设置某些属性,并从 ebean.properties 中设置其他属性。

ServerConfig config = new ServerConfig();
config.setName("pg");
...
// load configuration from ebean.properties
// using "pg" as the server name
config.loadFromProperties();
...

EbeanServer server = EbeanServerFactory.create(config);

外部属性

你可以有一个外部机制来加载 Properties,并通过 ServerConfig.loadFromProperties(Properties) 将其提供给 ServerConfig。这可用于通过外部加载的属性设置某些配置,并通过代码(调用 ServerConfig 上的 setter 方法)设置其他属性。

// load properties externally
Properties externalProps = ...;

ServerConfig config = new ServerConfig();
config.setName("pg");
...
// load configuration from external properties
// using "pg" as the server name
config.loadFromProperties(externalProps);
...

EbeanServer server = EbeanServerFactory.create(config);

注册

默认情况下,ServerConfig 的 register=true,这意味着 EbeanServer 实例已向 Ebean 单例注册,并且以后可以通过 Ebean.getServer(serverName) 访问。

如果你不使用此功能,则需要显式设置 ServerConfig.setRegister(false)。

ServerConfig config = new ServerConfig();
config.setName("pg");
...

EbeanServer server = EbeanServerFactory.create(config);

...

// Later on we can get the server instance
// using it's name via Ebean
EbeanServer server = Ebean.getServer("pg");

默认服务器

你可以设置 ServerConfig.setDefaultServer(true) 以指示创建的 EbeanServer 实例应为“默认”EbeanServer,并且以后可以通过 Ebean.getDefaultServer() 访问。

ServerConfig config = new ServerConfig();
config.setName("pg");
config.setDefaultServer(true);
...

EbeanServer server = EbeanServerFactory.create(config);

...

// Later on we can get the server instance ...
EbeanServer server = Ebean.getDefaultServer();

// Note: serverName of null is the same as getting the default server
EbeanServer server = Ebean.getServer(null);

依赖注入

对于 Guice、Spring 和类似的 DI 框架的依赖注入,通常需要一个“提供程序”或“工厂”来创建 ServerConfig,根据需要对其进行配置,可能使用 ebean.properties 或外部属性,然后使用 EbeanServerFactory 创建 EbeanServer 实例。

注入和 ActiveRecord

通常情况下,你希望能够以传统的 DI 编码样式 @Inject EbeanServer 实例使用活动记录样式。当使用 register=true 创建 EbeanServer 实例,并标记一个实例为 default server 时,可以做到这一点。