更改所有用法的默认注释值

时间:2018-08-10 09:21:37

标签: java spring-boot reflection annotations micrometer

Spring Boot(Micrometer的一部分)中的@Timed注释具有多个字段。其中之一是:

double[] percentiles() default {};

我想将此值设置为整个代码库一次到另一个数组,例如:

new double[] { 0.0, 50.0 };

这是我可以通过以下两种方式之一实现的:

  1. 在每个实例上设置字段:

    @Timed(percentiles = new double[] { 0.0, 50.0 })
    
  2. 使用@AliasFor或元注释创建具有所需值的其他注释。

我也遇到过AnnotationUtils类,但是看不到如何实现我的目标。

在Spring Boot中执行此操作的标准方法是什么?如果无法在Spring Boot中完成,那该如何利用JDK自身的反射功能呢?

2 个答案:

答案 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);
            }
        };
    }