Во-первых, один из способов взглянуть на это состоит в том, что Ebean имеет регистр/карту экземпляров EbeanServer, и один из этих экземпляров можно определить как def сервер ault.
Однако нет НИКАКОГО ТРЕБОВАНИЯ, чтобы использовать Ebean или зарегистрировать экземпляр EbeanServer. То есть экземпляры EbeanServer могут быть созданы и НЕ зарегистрированы с Ebean, и таким образом вам никогда не понадобится/использовать/не хотеть Ebean (более чистый стиль DI).
Указано по-разному - EbeanServer является реальной/фактической реализацией, и вы ДОЛЖНЫ иметь экземпляр EbeanServer. Вы можете ОПЦИОНАЛЬНО зарегистрировать экземпляр EbeanServer с Ebean (большинство людей это делает), и если вы зарегистрируете экземпляр EbeanServer, тогда он будет доступен для использования синглэтом Ebean, а методы на Ebean - быстрые ярлыки.
Вы можете использовать оба варианта, и это разумно в сценарии внедрения зависимостей (см. http://ebean-orm.github.io/docs/setup/guice). Таким образом, вы создаете экземпляр EbeanServer с помощью поставщика Guice или фабрики фабрики Spring. И этот экземпляр зарегистрирован в синглете Ebean. Таким образом, вы можете оба экземпляра @Inject EbeanServer использовать DI (Guice/Spring) и в то же время получить тот же экземпляр EbeanServer через Ebean.getDefaultServer() (и таким образом также использовать активную запись Model/Finder/Ebean ala) ,
Так на вопросы:
Q: EbeanServer подходит для создания EbeanServer программно?
EbeanServerFactory используется для создания экземпляров EbeanServer. См. http://ebean-orm.github.io/docs/setup/serverconfig
Вопрос: Можно ли получить объект EbeanServer, вызвав Ebean.getServer (имя строки), чтобы использовать все apis, предоставленные EbeanServer?
Да, предполагается, что экземпляр EbeanServer зарегистрирован (что необязательно). Обратитесь к ServerConfig.setRegister (boolean) и ServerConfig.setDefaultServer (boolean).
В: В каком случае следует использовать Ebean над EbeanServer (или наоборот)?
Во всех случаях вы технически используете экземпляр EbeanServer, так что на самом деле это вопрос стиля. Вы можете необязательно доступ к экземпляру EbeanServer через Ebean одноточечного когда экземпляр регистрируется в качестве сервера по умолчанию и т.д.
В то, что я бы назвал «традиционной инъекции зависимостей» стиль вы бы не использовать Ebean вообще. Экземпляры EbeanServer впрыскивают в вас услуг с помощью Guice/Spring и т.д.
В то, что я бы назвал «активная запись» стиль вам нравится простота и относительно чистый код, который является результатом использования модели/Finders/Ebean. Я обсуждаю этот стиль на http://ebean-orm.github.io/docs/setup/activerecord
Таким образом, выбор между использованием Ebean или EbeanServer - вопрос стиля. Я бы описал их как «традиционные DI» и «активные записи».
Теперь я также должен указать, что в случае DI вы можете использовать оба стиля, если хотите. Вы можете оба вставить экземпляр EbeanServer и получить доступ к нему через Ebean, чтобы включить использование Model/Finders и активный стиль записи. Это разумно в случае DI, где вам нужна программная конфигурация экземпляра EbeanServer, но вы по-прежнему хотите использовать активный стиль записи через Model и Finders.
ИСПЫТАНИЯ:
Тестирование также входит в это. Проект avaje-ebeanorm-mocker специально предоставляет механизмы для издевательства экземпляров EbeanServer, когда они используются через Ebean/Model/Finder, поэтому при использовании avaje-ebeanorm-mocker, который дает тот же уровень вероятности, который вы могли бы получить при использовании традиционной инъекции EbeanServer.
Q: Ebean подходит для создания EbeanServer по файлу конфигурации?
Ну да и нет. Для меня вы начинаете с того, что: «Используем ли мы DI/Guice/Spring», и вообще, если вы тогда, у вас есть фабрика поставщика/весенний завод для создания экземпляра EbeanServer (потому что хорошо иметь программную конфигурацию с более продвинутыми функциями EbeanServer - например, вводить в реализацию CurrentUserProvider). Затем вы дополнительно выбираете, хотите ли вы зарегистрировать экземпляр EbeanServer с синглэтом Ebean и тем самым дополнительно использовать Model/Finder/Ebean.
Что касается конфигурационного файла, то я считаю, что даже в программной конфигурации полезно также включить использование конфигурации внешних свойств, чтобы вы сначала перенесли serverConfig.loadFromProperties (свойства), а затем после этого программно задали вещи в serverConfig. Это дает вам возможность (даже если вы не используете его изначально) для настройки внешней среды по свойствам/файлу.
Если вы не используете инъекцию зависимостей вообще (небольшое простое приложение и т. Д.), То Ebean и ebean.properties - довольно быстрый простой механизм для использования.
Надеюсь, это поможет с некоторыми из ваших вопросов.
Cheers, Rob.