扩展DataSourcePublicMetrics以获取其他指标

时间:2015-05-06 16:01:36

标签: spring-boot

我们正在使用自定义DataSource来实现多租户。 (我们有一个DataSource bean,它就像其他数据源的代理一样,租户上下文是使用ThreadLocal变量设置的。我的要求是获取由单个DataSource Bean代理的各个数据源的度量。)基本上,我需要以某种方式添加其他指标。似乎最好的方法是扩展DataSourcePublicMetrics,因为PublicMetricsAutoConfiguration有条件地创建了这个bean。问题是DataSourcePublicMetrics中的字段都是私有的,难以重用。我看到的唯一解决方案是隐藏所有内部变量并覆盖公共方法。有没有更好的办法?我使用的是spring-boot 1.2.2.RELEASE。

1 个答案:

答案 0 :(得分:0)

使用合成而不是继承。

MyCustomMetrics implements PublicMetrics

实现PublicMetrics的任何bean都被执行器接收到/ metrics。 DataSourcePublicMetrics实现此接口。

然后将DataSourcePublicMetrics bean注入MyCustomMetrics(这甚至可能是您的自定义DataSource,但最好创建一个不同的类)。实施PublicMetrics的合同。

public Collection<Metric<?>> metrics()

只需将其推迟到DataSourcePublicMetrics实现,并添加您想要的任何自定义指标。