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