何时使用 DropWizard 捆绑包?

2022-09-01 19:30:38

我对一个难以捉摸但可能非常强大的DropWizard功能感到好奇,该功能称为捆绑包。根据文档:

Dropwizard 捆绑包是一组可重用的功能,用于定义应用程序行为块。

鉴于DropWizard(DW)有非常好的记录,我很震惊,这真的是对捆绑包的唯一解释。我在野外看到一些例子:

但我不明白的是:捆绑包似乎只是代码打包并在JAR中分发。那么,为什么我不能只编写“原始”(非“捆绑包”兼容)Java类来做我需要的事情,将它们放入JAR中,然后将该JAR包含在我的构建/编译类路径中,然后在我的DW应用程序中使用它们?DW 捆绑包有什么用途,何时应该使用它们?


答案 1

捆绑包就像Dropwizard的插件,可以很容易地添加小块功能。例如,如果您使用资产捆绑包,则可以将 UI 附加到 API 以进行测试,它将在同一端口上运行,并且非常易于使用。另一个例子是迁移捆绑包,它可以轻松地将 Liquibase 绑定到 Dropwizard 中,这样您就可以使用相同的 jar 运行数据库迁移。这也很好,因为您的API可以访问一些sql数据库,该数据库在yml文件中定义了连接参数,迁移将能够在同一数据库上运行。


答案 2

假设您在公司为平台团队工作,您的开发人员使用Kafka作为消息总线。

然后,您可以要求开发团队在其 DW 应用中添加以下配置,并且可以编写捆绑包来解析代理,并构建生产者实例。通过与任何依赖关系注入框架集成,您所要做的就是在需要时@InJect生产者实例。

kafka-broker-uris: <your kafka broker urls>

我们可以使用库做同样的事情,并调用一个获取 broker-uri 并返回生产者对象的方法。

但是,我相信,主要的好处来自捆绑包知道如何解析配置,并在DW生命周期的初始化阶段预构建必要的对象。另外,如果你想在你的公司里设定一个关于如何定义配置文件的标准,那么最好使用捆绑包。


推荐