何时使用DropWizard捆绑包?

时间:2015-07-23 14:46:12

标签: java dropwizard

我很好奇一个名为Bundles的难以捉摸的 - 但可能非常强大的 - DropWizard功能。根据文件:

  

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

鉴于DropWizard(DW)非常有很好的文档,我很震惊这是对bundle的唯一解释。我在野外看到了一些例子:

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

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:0)

DW捆绑包与“原始” JAR捆绑包相似,它们都可用于提供可重用的功能。但是,不同之处在于DW捆绑包提供的额外支持。捆绑包可以设置为可配置,即可以将DW配置文件用于配置参数

答案 2 :(得分:-1)

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

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

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

我们可以使用库执行相同的操作,并调用一个获取broker-uri并返回生产者对象的方法。

但是,我相信,主要好处来自Bundle,它知道如何解析配置,并在DW生命周期的Initialize阶段预构建了必要的对象。 另外,如果您想在公司中设定如何定义配置文件的标准,那么最好使用捆绑软件。