Когда использовать пакеты DropWizard?
Мне любопытно узнать о неуловимой, но потенциально очень мощной функции DropWizard под названием Bundles. Согласно документам:
Пакет Dropwizard - это многократно используемая группа функций, используемая для определения блоков поведения приложений.
Учитывая, что DropWizard (DW) очень хорошо документирован, Im шокировал, что это действительно единственное объяснение в связках. Я вижу несколько примеров из них в дикой природе:
Но я не понимаю: пучки, похоже, только что упакованы в код и распределены в JAR. Итак, почему я не могу написать "сырые" (не "связные" -компетентные) классы Java, чтобы делать то, что мне нужно, ударить их в JAR, а затем включить этот JAR в мой путь сборки/компиляции, а затем использовать их в моем DW приложение? Какая польза от DW-пакета и когда его следует использовать?
Ответы
Ответ 1
Связки похожи на аддоны Dropwizard, которые позволяют легко добавлять небольшие функциональные возможности. Например, если вы используете пакет активов, вы можете подключить пользовательский интерфейс к своему API для целей тестирования, и он будет работать на одном и том же порту и очень прост в использовании. Другим примером может быть Migrations Bundle, который легко связывает Liquibase с Dropwizard, чтобы вы могли запускать миграции баз данных с помощью той же банки. Это также хорошо работает, так как ваш API может получить доступ к некоторой базе данных sql, которая имеет параметры подключения, определенные в yml файле, миграция будет работать в одной базе данных.
Ответ 2
Пакеты DW похожи на "необработанный" JAR в том смысле, что оба могут использоваться для обеспечения функциональности многократного использования. Однако разница заключается в дополнительной поддержке, которой пользуются комплекты DW. Связки можно сделать настраиваемыми, т.е. они могут использовать файл конфигурации DW для параметров конфигурации
Ответ 3
Допустим, вы работаете в вашей команде разработчиков платформы в вашей компании, и ваши разработчики используют Kafka в качестве шины сообщений.
Затем вы можете попросить команду разработчиков добавить приведенную ниже конфигурацию в свое приложение DW, а также написать пакет для анализа broker-uris и создания экземпляра источника. В случае интеграции с любой платформой внедрения зависимостей все, что вам нужно сделать, это @InJect экземпляр производителя, когда вам нужно.
kafka-broker-uris: <your kafka broker urls>
Мы можем сделать то же самое, используя библиотеку, и вызвать метод, который получает broker-uri и возвращает объект производителя.
Но, я полагаю, главное преимущество заключается в том, что Bundle умеет анализировать конфигурацию и предварительно создает необходимые объекты на этапе инициализации жизненного цикла DW. Кроме того, если вы хотите установить стандарт в своей компании на то, как должен быть определен файл конфигурации, тогда хорошо идти с пакетом.