何时使用DropWizard捆绑包?

sme*_*eeb 22 java dropwizard

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

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

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

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

use*_*059 8

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

  • 谢谢@ user3354059(+1) - 所以我完全*得到*捆绑包是为了在多个DW应用程序中重用DW应用程序功能.我想我只是不明白为什么我需要创建一个"bundle"而不是将公共代码打包到JAR中,并让我的每个DW应用程序都使用该JAR中定义的类.您引用的所有示例(Migrations/Liquibase/etc.)也可以打包在普通的JAR中 - 不符合任何Bundle API - 然后我的所有DW应用程序都可以依赖于该JAR并使用其类来完成数据库迁移.我知道我缺少*某些东西*,我只是没有看到它. (4认同)
  • 这可能是易于使用的东西。我发现添加几行代码来添加捆绑包要比为所需的几个功能创建一个完整的其他库要容易得多。 (2认同)
  • @smeeb我想知道您是否在其他地方找到了该问题的答案,因为我有同样的问题 (2认同)