Dropwizard 有许多配置内置组件(如servlet引擎或数据库数据源)的选项,以及建立可使用配置文件运行和配置的全新命令的选项。咱们还能够为那些但愿根据运行环境进行更改的配置类型注入环境变量和系统属性。与SpringBoot同样,咱们能够将整个属性类绑定到特定对象。在本例中,让咱们将全部helloapp.*properties 绑定到 HolaRestResource 类。使用 SpringBoot,咱们能够选择在带有键值元组的属性文件中编写配置文件。咱们也可使用YAML。对于 Dropwizard,咱们只有YAML选项。java
所以,让咱们在根项目中建立一个名为conf/applica-tion.yml的文件(注意,若是不存在conf目录,则须要建立该目录)。咱们将配置文件放在conf文件夹中,以帮助咱们组织项目的不一样配置文件(目录的命名并不重要(也就是说,它对 Dropwizard 没有任何传统意义)。让咱们在conf/application.yml文件中添加一些配置:git
在本例中,咱们将属性设置为特定值。若是咱们但愿可以基于某些环境条件覆盖它呢?咱们能够经过传入相似于Ddw.helloapp.say=guten标记的Java系统变量来重写它。请注意,系统属性名称的dw.*部分是重要的;它告诉Drop向导将该值应用于应用程序的一个配置设置。若是咱们想根据OS环境变量的值重写属性,该怎么办?看上去像3-8的例子。github
属性的值的模式是首先查看一个envi-ronment变量(若是存在的话)。若是环境变量未设置,则使用所提供的默认值。咱们还须要明确地告诉咱们的应用程序,咱们想要使用环境变量的补充。在HolaDropwizardApplication类中,initialize()方法,看示例3-9。数据库
如今咱们已经设置了配置,让咱们为它构建支持对象。咱们有目的地建立了一个名为helloapp的子配置,它容许咱们命名咱们的配置来组织它们。咱们能够将它保留为顶级配置项,可是因为咱们没有这样作,让咱们看看如何将应用程序.yml文件绑定到Dropwizard 配置对象。api
让咱们建立一个名为HelloSayingFactory的新类,它位于src/main/java/com/redhat/examples/Dropwizard/Resources目录中:浏览器
这是一个简单的JavaBean,带有一些验证(@NotEpty,来自Hibernate验证器库)和Jackson(@JsonProperty)注释。这个类在YAML文件中包装了HELLOAPP配置下的全部配置;如今,咱们只须要“saying”。当咱们第一次建立应用程序时,建立了一个HolaDropwi zardConfiguration类。让咱们打开该类并添加新的HelloSayingFactory,如示例3-10所示。app
最后,咱们须要将配置注入HolaRestRe源代码(示例3-11)。框架
因为没有强制使用的神奇依赖注入框架,您须要更新HolaDropwizardApplication,以便向REST资源注入配置(示例3-12)。ide
如今,咱们应该有一个至关复杂的配置注入能力可供咱们使用。在本例中,咱们有意地使它稍微复杂一些,以涵盖您在实际用例中可能会作的事情。还要注意的是,虽然将全部这些链接起来的机制更简单,但这里有一个很是清晰的模式:将咱们的Java对象绑定到YAML配置文件,并使全部内容都很是简单和直观,而不须要利用复杂的框架。微服务
让咱们运行咱们的应用程序。要作到这一点,让咱们更新apor.xml以传递新的conf/application.yml文件,如示例3-13所示。
如今,咱们能够从命令行运行:
在浏览器输入http://localhost:8080/api/hola:
若是咱们中止微服务,并导出一个环境变量,咱们应该会看到一句新的语句:
默认状况下,在管理端口上启用了度量标准(默认状况下为8081),可是Dropwizard对咱们的应用程序有什么具体的了解呢?让咱们在HolaRestResources上添加几个声明性注释(示例3-14)。
咱们添加了@Timed注释,它跟踪对服务的调用须要多长时间。用于收集指标的其余注释包括:
@Metered
调用服务率
@ExceptionMetered
抛出异常率
构建并从新启动您的微服务,并尝试在http://localhost:8080/api/hola上几回访问您的服务。而后,若是导航到http://localhost:8081/metrics?pretty=true,并滚动到底部(可能与您的不一样),您应该会看到咱们服务的度量值。
Dropwizard 将咱们的微服务打包为一个可执行的 jar。咱们所要作的就是构建咱们的应用程序并像下面这样运行它:
下一节更加精彩!!!敬请期待
原文:
做者源码:https://github.com/redhat-developer/microservices-by-example-source