扩展 DataSourcePublicMetrics 以获得额外的指标
Extending DataSourcePublicMetrics to get additional metrics
我们正在使用实现多租户的自定义数据源。 (我们有一个 DataSource bean,它充当其他数据源的代理,租户上下文是使用 ThreadLocal 变量设置的。我的要求是获取由该单个 DataSource Bean 代理的各个数据源的指标。)基本上,我需要以某种方式添加额外的指标。似乎最好的方法是扩展 DataSourcePublicMetrics
,因为 PublicMetricsAutoConfiguration
有条件地创建了这个 bean。问题是 DataSourcePublicMetrics
中的字段都是私有的,因此难以重用。我看到的唯一解决方案是隐藏所有内部变量并覆盖 public 方法。有没有更好的办法?我正在使用 spring-boot 1.2.2.RELEASE.
使用组合而不是继承。
MyCustomMetrics implements PublicMetrics
执行器拾取任何实现 PublicMetrics 的 bean,以在 /metrics 中公开。 DataSourcePublicMetrics 实现了这个接口。
然后将 DataSourcePublicMetrics bean 注入 MyCustomMetrics(这甚至可以是您的自定义数据源,但最好创建一个不同的 class)。实现PublicMetrics的合约。
public Collection<Metric<?>> metrics()
只需将其推迟到 DataSourcePublicMetrics 实现,并添加您想要的任何自定义指标。
我们正在使用实现多租户的自定义数据源。 (我们有一个 DataSource bean,它充当其他数据源的代理,租户上下文是使用 ThreadLocal 变量设置的。我的要求是获取由该单个 DataSource Bean 代理的各个数据源的指标。)基本上,我需要以某种方式添加额外的指标。似乎最好的方法是扩展 DataSourcePublicMetrics
,因为 PublicMetricsAutoConfiguration
有条件地创建了这个 bean。问题是 DataSourcePublicMetrics
中的字段都是私有的,因此难以重用。我看到的唯一解决方案是隐藏所有内部变量并覆盖 public 方法。有没有更好的办法?我正在使用 spring-boot 1.2.2.RELEASE.
使用组合而不是继承。
MyCustomMetrics implements PublicMetrics
执行器拾取任何实现 PublicMetrics 的 bean,以在 /metrics 中公开。 DataSourcePublicMetrics 实现了这个接口。
然后将 DataSourcePublicMetrics bean 注入 MyCustomMetrics(这甚至可以是您的自定义数据源,但最好创建一个不同的 class)。实现PublicMetrics的合约。
public Collection<Metric<?>> metrics()
只需将其推迟到 DataSourcePublicMetrics 实现,并添加您想要的任何自定义指标。