DropWizard Bootstrap vs Configuration vs Environment
Типичное приложение DropWizard указывает подкласс приложения и переопределяет его метод initialize
следующим образом:
class MyApplication extends Application<MyConfiguration> {
static void main(String[] args) {
new MyApplication().run(args)
}
@Override
public void initialize(Bootstrap<MyConfiguration> bootstrap) {
// ???
}
@Override
public void run(MyConfiguration configuration, Environment environment)
throws Exception {
// Register resources, health checks, etc.
}
}
После просмотра документов DropWizard, а также JavaDocs для:
-
Configuration
- Объектное представление файла конфигурации YAML. Расширьте это с помощью собственных свойств конфигурации, и они также будут проанализированы из файла YAML.
-
Bootstrap
- среда приложения перед запуском, содержащая все необходимое для загрузки команды Dropwizard.
-
Environment
- Прикладная среда Dropwizard.
Но это довольно неопределенные определения классов, особенно последние два. Я понимаю, что я должен быть подклассом Configuration
и что он представляет собой POJO в памяти моего конфигурационного файла YAML/JSON для моего приложения.
Но я не могу понять, что представляют другие конструкции (Bootstrap
и Environment
). Я использую для ввода конфигураций, специфичных для среды, в мои приложения, и поэтому я склонен думать о понятиях "среда" и "конфигурация" как один в том же самом.
Кроме того, кажется, что DropWizard тесно соединяет экземпляры Bootstrap
с экземплярами Configuration
impl, но я не могу найти никаких очевидных примеров того, как эти два класса отличаются друг от друга, и как их следует использовать друг от друга.
Поэтому я спрашиваю:
- Что такое
Bootstrap
, для чего я его использую?
- Что такое
Environment
, и для чего я его использую?
Ответы
Ответ 1
Dropwizard - это в основном самоуверенная веб-инфраструктура, в основном используемая для работы в качестве проекта API REST. Классы, о которых вы спрашиваете, суть проблемы, которая делает приложение Dropwizard. Разработчики объединили все библиотеки, которые они хотели использовать в своей структуре, и связали их вместе, чтобы мы могли легко отработать то, что они загрузили для нас.
Environment - это контейнер среды Dropwizard, а не персональная среда вашего приложения (то есть локальная или производственная). Он имеет свойства, которые являются основой для инфраструктуры Dropwizard, такой как контейнер для трикотажа.
Bootstrap - это в основном класс, который соединяет все, что используется в среде, включая вашу конфигурацию и приложение.
Если вы посмотрите на исходные файлы, вы получите представление о том, как работают эти классы.
Update:
По вашему вопросу ниже, среда не должна использоваться для определения типов и учетных данных подключения к базе данных; это для вашего файла конфигурации .yml. Вы захотите поместить в этот файл какие-либо переменные среды, а затем запустите приложение с определенным .yml файлом. Я лично имею application-local.yml, application-staging.yml и application-prod.yml и запускаю свое приложение с соответствующим .yml в зависимости от среды.
Dropwizard выполняет некоторую автоматическую настройку источников данных с определенными свойствами .yml: см. здесь.