java - baeldung - ¿Cómo configuro las métricas HikariCP y Dropwizard/Coda-Hale en la aplicación Spring Boot?
hikaricp maven (2)
Así que pude resolver esto configurando HikariCP manualmente en un archivo de configuración java. Eso me permitió obtener una referencia al Spring Boot MetricRegistry, que luego pude establecer en HikariConfig. Aquí está mi clase de configuración:
@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);
}
}
Al leer las instrucciones en la wiki de HikariCP acerca de cómo habilitar las métricas de Dropwizard, dice simplemente configurar una instancia de MetricsRegistry en HikariConfig o HikariDatasource. El problema es que, en Spring Boot, toda la configuración se maneja mediante autoconfiguración, por lo que no estoy configurando manualmente el conjunto de HikariCP. ¿Alguna instrucción sobre cómo hacer esto? ¿Tengo que anular completamente la configuración automática definiendo mi propio bean y configurando todas las configuraciones en un archivo @Configuration?
O deje que Spring Boot configure su origen de datos, @Autowire the DataSource y MetricRegistry en su clase @ Configuration / @ SpringBootApplication y conéctelos en un @PostConstruct:
@Autowired
private DataSource dataSource;
@Autowired
private MetricRegistry metricRegistry;
@PostConstruct
public void setUpHikariWithMetrics() {
if(dataSource instanceof HikariDataSource) {
((HikariDataSource) dataSource).setMetricRegistry(metricRegistry);
}
}