2016-10-28 41 views
1

我想使用Springboot MetricRepository

org.springframework.boot.actuate.metrics.repository.MetricRepository 

吐出指标与

private final MetricRepository repository; 

@Autowired 
public MetricExporterService(MetricRepository repository) { 
    this.repository = repository; 
} 

,但由于我使用Java 1.8,我得到

Parameter 0 of constructor in com.example.actuator.MetricExporterService required a bean of type 'org.springframework.boot.actuate.metrics.repository.MetricRepository' that could not be found. 
    - Bean method 'actuatorMetricRepository' not loaded because @ConditionalOnJava (older than 1.8) found 1.8 

是否存在的一种方式压倒这种行为?

回答

4

与Java 8,你应该宁愿使用CounterServiceGaugeServiceBufferMetricReader

@Autowired 
private BufferMetricReader metricReader; 

@Autowired 
private CounterService counterService; 

@Autowired 
private GaugeService gaugeService; 

... 

counterService.increment("metric1"); 
gaugeService.submit("metric2", 10d); 
metricReader.findAll(); 

Spring Documentation

GaugeService和CounterService的默认实现由Spring启动提供 取决于版本你正在使用的Java。与 Java 8(或更好)的实施切换到高性能 版本优化的快速写入,支持原子内存缓冲区, ,而不是一成不变但相对昂贵的度量类型 (计数器约快5倍并测量大约 两倍于基于存储库的实现速度)。

...

【注】老MetricRepository及其InMemoryMetricRepository 实现不使用默认情况下,如果你是Java的8,或如果您 使用Dropwizard指标。

...

要录制自己的指标注入CounterService和/或GaugeService 到你的bean。 CounterService公开增加,减少和重置方法; GaugeService提供了一个提交方法。