Spring Boot(Micrometer的一部分)中的@Timed
注释具有多个字段。其中之一是:
double[] percentiles() default {};
我想将此值设置为整个代码库一次到另一个数组,例如:
new double[] { 0.0, 50.0 };
这是我可以通过以下两种方式之一实现的:
在每个实例上设置字段:
@Timed(percentiles = new double[] { 0.0, 50.0 })
使用@AliasFor
或元注释创建具有所需值的其他注释。
我也遇到过AnnotationUtils类,但是看不到如何实现我的目标。
在Spring Boot中执行此操作的标准方法是什么?如果无法在Spring Boot中完成,那该如何利用JDK自身的反射功能呢?
答案 0 :(得分:1)
您可以使用@Timed
创建自己的元注释。有关详情,请参见:https://github.com/micrometer-metrics/micrometer/issues/145
答案 1 :(得分:1)
如果您希望为整个应用程序中生成的所有直方图配置一组百分位数,则可以使用MeterFilter
。
千分尺文档:https://micrometer.io/docs/concepts#_configuring_distribution_statistics
在您的Spring Boot项目中,您将把仪表过滤器创建为bean,即
。 @Bean
public MeterFilter meterFilter() {
return new MeterFilter() {
@Override
public DistributionStatisticConfig configure(Meter.Id id, DistributionStatisticConfig config) {
return DistributionStatisticConfig.builder()
.percentiles(0.5, 0.75, 0.95, 0.98, 0.99)
.percentilesHistogram(true)
.build()
.merge(config);
}
};
}