[英]How do I configure HikariCP and Dropwizard/Coda-Hale metrics in Spring Boot application
Reading the instructions on the HikariCP wiki about how to enable the Dropwizard metrics, it says to just configure a MetricsRegistry instance in HikariConfig or HikariDatasource. 阅读关于如何启用Dropwizard指标的HikariCP wiki上的说明,它说只需在HikariConfig或HikariDatasource中配置MetricsRegistry实例。 Problem is, in Spring Boot, all the configuration is handled by autoconfiguration so I'm not manually configuring the HikariCP pool at all. 问题是,在Spring Boot中,所有配置都由自动配置处理,因此我根本不会手动配置HikariCP池。 Any instructions on how to do this? 有关如何执行此操作的任何说明? Do I have to completely override the autoconfiguration by defining my own bean and setting all the settings in a @Configuration file? 我是否必须通过定义自己的bean并在@Configuration文件中设置所有设置来完全覆盖自动配置?
So I was able to figure this out by manually configuring HikariCP in a java configuration file. 所以我能够通过在java配置文件中手动配置HikariCP来解决这个问题。 That allowed me to get a reference to the Spring Boot MetricRegistry, which I could then set in HikariConfig. 这让我得到了Spring Boot MetricRegistry的引用,然后我可以在HikariConfig中设置它。 Here's my configuration class: 这是我的配置类:
@Configuration
public class DatasourceConfiguration {
@Value("${spring.datasource.username}")
private String user;
@Value("${spring.datasource.password}")
private String password;
@Value("${spring.datasource.url}")
private String dataSourceUrl;
@Value("${spring.datasource.driverClassName}")
private String driverClassName;
@Value("${spring.datasource.connectionTestQuery}")
private String connectionTestQuery;
@Autowired
private MetricRegistry metricRegistry;
@Bean
public DataSource primaryDataSource() {
Properties dsProps = new Properties();
dsProps.setProperty("url", dataSourceUrl);
dsProps.setProperty("user", user);
dsProps.setProperty("password", password);
Properties configProps = new Properties();
configProps.setProperty("connectionTestQuery", connectionTestQuery);
configProps.setProperty("driverClassName", driverClassName);
configProps.setProperty("jdbcUrl", dataSourceUrl);
HikariConfig hc = new HikariConfig(configProps);
hc.setDataSourceProperties(dsProps);
hc.setMetricRegistry(metricRegistry);
return new HikariDataSource(hc);
}
}
Or let Spring Boot configure your data source, @Autowire the DataSource and MetricRegistry in your @Configuration/@SpringBootApplication class and wire them together in a @PostConstruct: 或者让Spring Boot在@ Configuration / @ SpringBootApplication类中配置您的数据源@Autowire DataSource和MetricRegistry,并在@PostConstruct中将它们连接在一起:
@Autowired
private DataSource dataSource;
@Autowired
private MetricRegistry metricRegistry;
@PostConstruct
public void setUpHikariWithMetrics() {
if(dataSource instanceof HikariDataSource) {
((HikariDataSource) dataSource).setMetricRegistry(metricRegistry);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.