一个典型的DropWizard应用程序指定一个Application子类,并重写它的initialize
方法,如下所示:
一个典型的 DropWizard 应用会指定一个 Application 子类,并覆盖其 initialize
方法,例如:
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:
Configuration
- YAML配置文件的对象表示。可以通过扩展此类添加自己的配置属性,它们将从YAML文件中解析。Bootstrap
- 预启动应用程序环境,包含启动Dropwizard命令所需的所有内容。Environment
- Dropwizard 应用程序的运行环境。
但这些类的定义相当模糊,特别是后面两个。我理解应该定义Configuration
的子类,并且它表示我的应用程序的YAML/JSON配置文件的内存POJO。
但我无法理解其他构造函数代表的意义(Bootstrap
和Environment
) 。我习惯将特定于环境的配置注入到我的应用程序中,因此我倾向于将“环境”和“配置”的概念视为相同的。
此外,似乎DropWizard紧密耦合了Bootstrap
实例和Configuration
实现实例,但我找不到任何可证明这两个类差异的示例,并且它们应该如何彼此不同地使用。
所以我问:
Bootstrap
是什么,我用它做什么?Environment
是什么,我用它做什么?
Environment
:比如说,用于确定我们正在运行 Jersey/Jetty 的“dev”版本,因此我们应该使用内存嵌入式数据库,而不是容器的“prod”版本,因此应该使用我们的实际 MySQL 服务器吗?如果不是,你能给出Environment
的几个具体用例吗?再次感谢! - IAmYourFaja