申请网站域名怎么做,淮北之窗,做社交网站的预算,c 网站开发模式介绍 FlexyPool严重依赖Dropwizard #xff08;以前是Codahale#xff09;度量标准来监视连接池的使用情况 。 集成到Dropwizard中后#xff0c;程序包名称必然会被重命名 。 因此#xff0c;4.0.0版本将使用io.dropwizard.metrics软件包名称代替com.codahale.metrics 。 … 介绍 FlexyPool严重依赖Dropwizard 以前是Codahale度量标准来监视连接池的使用情况 。 集成到Dropwizard中后程序包名称必然会被重命名 。 因此4.0.0版本将使用io.dropwizard.metrics软件包名称代替com.codahale.metrics 。 挑战 除了明显的向后不兼容之外此更改最具有挑战性的方面是Maven依赖项只会看到版本递增。 这意味着您将无法在同一Maven模块中包含两个版本因为groupId和artifactId在3.xx和4.xx版本之间不会更改。 dependencygroupIdio.dropwizard.metrics/groupIdartifactIdmetrics-core/artifactIdversion${codahale.metrics.version}/version
/dependencydependencygroupIdio.dropwizard.metrics/groupIdartifactIdmetrics-core/artifactIdversion${dropwizard.metrics.version}/version
/dependency 在最终用户应用程序中此更改是可管理的因为您只需要从一个版本迁移到另一个版本即可。 由于需要支持同一库的两个不兼容版本因此基于Dropwizard指标构建的开放源代码框架很难重构。 毕竟您不想强迫您的客户端迁移到某个Metrics依赖项。 幸运的是FlexyPool从一开始就拥有自己的Metrics抽象层。 将框架与外部依赖项隔离是一种安全的措施使您无需费力即可交换依赖项。 为了同时支持Codahale和Dropwizard软件包名称FlexyPool指标的构建如下 由于这些类不能驻留在一个jar中因此有三个模块承载此层次结构 flexy-pool-core定义FlexyPool指标抽象 flexy-codahale-metrics在Codahale矩阵的顶部实现FlexyPool指标抽象 flexy-dropwizard-metrics在Dropwizard矩阵之上实现FlexyPool指标抽象 每个MetricsFactory均已注册为服务提供商 public class CodahaleMetricsFactoryService implements MetricsFactoryService {public static final String METRICS_CLASS_NAME com.codahale.metrics.Metric;Overridepublic MetricsFactory load() {return ClassLoaderUtils.findClass(METRICS_CLASS_NAME) ? CodahaleMetrics.FACTORY : null;}
}public class DropwizardMetricsFactoryService implements MetricsFactoryService {public static final String METRICS_CLASS_NAME io.dropwizard.metrics.Metric;Overridepublic MetricsFactory load() {return ClassLoaderUtils.findClass(METRICS_CLASS_NAME) ? DropwizardMetrics.FACTORY : null;}
} 并在运行时解析服务 private ServiceLoaderMetricsFactoryService serviceLoader ServiceLoader.load(MetricsFactoryService.class);public MetricsFactory resolve() {for(MetricsFactoryService service : serviceLoader) {MetricsFactory metricsFactory service.load();if(metricsFactory ! null) {return metricsFactory;}}throw new IllegalStateException(No MetricsFactory could be loaded!);
}结论 这样FlexyPool既可以使用Metrics实现又可以根据当前可用的库动态地做出决定。 Dropwizard指标4.0.0尚未发布但FlexyPool已为即将进行的更改做好了准备。 翻译自: https://www.javacodegeeks.com/2015/07/how-does-flexypool-support-the-dropwizard-metrics-package-renaming.html