Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 扩展DataSourcePublicMetrics以获取其他度量_Spring Boot - Fatal编程技术网

Spring boot 扩展DataSourcePublicMetrics以获取其他度量

Spring boot 扩展DataSourcePublicMetrics以获取其他度量,spring-boot,Spring Boot,我们正在使用一个定制的数据源来实现多租户。(我们有一个单独的数据源bean,它的作用类似于其他数据源的代理,租户上下文是使用ThreadLocal变量设置的。我的要求是获取单个数据源bean代理的各个数据源的度量。)基本上,我需要以某种方式添加其他度量。似乎最好的方法是扩展DataSourcePublicMetrics,因为PublicMetricsAutoConfiguration有条件地创建这个bean。问题是,DataSourcePublicMetrics中的字段都是私有的,这使得重用变得

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

使用组合而不是继承

MyCustomMetrics implements PublicMetrics
执行器拾取实现PublicMetrics的任何bean,并在/metrics处公开。DataSourcePublicMetrics实现此接口

然后将DataSourcePublicMetrics bean注入MyCustomMetrics(这甚至可以是您的自定义数据源,但最好创建一个不同的类)。执行PublicMetrics的合同

public Collection<Metric<?>> metrics()

公共收藏谢谢你的提示。我试图让
数据源PublicMetrics
bean正常工作,这就是我进入兔子洞的原因。因此,我将我的自定义数据源注入到实现了PublicMetrics的
MyCustomMetrics
bean中,并从中获取信息。我没有注入DataSourcePublicMetrics,因为它没有增加任何价值。