Подтвердить что ты не робот

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, и для чего я его использую?
4b9b3361

Ответ 1

Dropwizard - это в основном самоуверенная веб-инфраструктура, в основном используемая для работы в качестве проекта API REST. Классы, о которых вы спрашиваете, суть проблемы, которая делает приложение Dropwizard. Разработчики объединили все библиотеки, которые они хотели использовать в своей структуре, и связали их вместе, чтобы мы могли легко отработать то, что они загрузили для нас.

Environment - это контейнер среды Dropwizard, а не персональная среда вашего приложения (то есть локальная или производственная). Он имеет свойства, которые являются основой для инфраструктуры Dropwizard, такой как контейнер для трикотажа.

Bootstrap - это в основном класс, который соединяет все, что используется в среде, включая вашу конфигурацию и приложение.

Если вы посмотрите на исходные файлы, вы получите представление о том, как работают эти классы.

Update: По вашему вопросу ниже, среда не должна использоваться для определения типов и учетных данных подключения к базе данных; это для вашего файла конфигурации .yml. Вы захотите поместить в этот файл какие-либо переменные среды, а затем запустите приложение с определенным .yml файлом. Я лично имею application-local.yml, application-staging.yml и application-prod.yml и запускаю свое приложение с соответствующим .yml в зависимости от среды.

Dropwizard выполняет некоторую автоматическую настройку источников данных с определенными свойствами .yml: см. здесь.