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