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 for:
> Configuration
– YAML配置文件的对象表示。使用您自己的配置属性扩展它,并且它们也将从YAML文件解析。
> Bootstrap
– 预启动应用程序环境,其中包含引导Dropwizard命令所需的所有内容。
> Environment
– Dropwizard应用程序的环境。
但这些是相当模糊的类定义,特别是最后两个。我明白我应该对配置进行子类化,它代表了我应用程序的YAML / JSON配置文件的内存中POJO。
但我不明白其他构造代表什么(Bootstrap和Environment)。我习惯于将环境特定的配置注入到我的应用程序中,所以我倾向于将“环境”和“配置”的概念看作一个。
此外,似乎DropWizard将Bootstrap实例与配置impl实例紧密耦合,但是我可以找到关于这两个类如何不同的示例示例,以及它们如何被使用彼此不同。
所以我问:
什么是Bootstrap,我该用什么?
>什么是环境,我该用什么?
解决方法
Environment是Dropwizard Environment容器,而不是您的应用程序的个人环境(即本地与生产)。它具有Dropwizard框架的核心属性,如平纹网络容器。
Bootstrap基本上是连接环境中使用的所有内容的类,包括您的配置和应用程序。
如果您查看源文件,您将很好地了解这些类是如何工作的。
更新:
根据下面的问题,环境不应该用于确定数据库连接类型和凭据;这就是你的配置.yml文件。您将要在该文件中放置任何环境特定变量,然后使用特定的.yml文件运行应用程序。我个人有一个application-local.yml,application-staging.yml和application-prod.yml,并根据环境运行我的应用程序与适当的.yml。