如何在 Spring 引导应用程序中配置 HikariCP 和 Dropwizard/Coda-Hale 指标
How do I configure HikariCP and Dropwizard/Coda-Hale metrics in Spring Boot application
在 HikariCP wiki 上阅读 the instructions 关于如何启用 Dropwizard 指标,它说只需在 HikariConfig
或 HikariDatasource
中配置一个 MetricsRegistry
实例。
问题是,在 Spring 引导中,所有配置都由自动配置处理,所以我根本没有手动配置 HikariCP 池。
关于如何执行此操作的任何说明?我是否必须通过定义我自己的 bean 并在 @Configuration
文件中设置所有设置来完全覆盖自动配置?
所以我能够通过在 java 配置文件中手动配置 HikariCP 来解决这个问题。这使我能够获得对 Spring Boot MetricRegistry 的引用,然后我可以在 HikariConfig 中对其进行设置。这是我的配置 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);
}
}
或者让 Spring 引导配置您的数据源,@Autowire DataSource 和 MetricRegistry 在您的 @Configuration/@SpringBootApplication class 中,并在 @PostConstruct 中将它们连接在一起:
@Autowired
private DataSource dataSource;
@Autowired
private MetricRegistry metricRegistry;
@PostConstruct
public void setUpHikariWithMetrics() {
if(dataSource instanceof HikariDataSource) {
((HikariDataSource) dataSource).setMetricRegistry(metricRegistry);
}
}
在 HikariCP wiki 上阅读 the instructions 关于如何启用 Dropwizard 指标,它说只需在 HikariConfig
或 HikariDatasource
中配置一个 MetricsRegistry
实例。
问题是,在 Spring 引导中,所有配置都由自动配置处理,所以我根本没有手动配置 HikariCP 池。
关于如何执行此操作的任何说明?我是否必须通过定义我自己的 bean 并在 @Configuration
文件中设置所有设置来完全覆盖自动配置?
所以我能够通过在 java 配置文件中手动配置 HikariCP 来解决这个问题。这使我能够获得对 Spring Boot MetricRegistry 的引用,然后我可以在 HikariConfig 中对其进行设置。这是我的配置 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);
}
}
或者让 Spring 引导配置您的数据源,@Autowire DataSource 和 MetricRegistry 在您的 @Configuration/@SpringBootApplication class 中,并在 @PostConstruct 中将它们连接在一起:
@Autowired
private DataSource dataSource;
@Autowired
private MetricRegistry metricRegistry;
@PostConstruct
public void setUpHikariWithMetrics() {
if(dataSource instanceof HikariDataSource) {
((HikariDataSource) dataSource).setMetricRegistry(metricRegistry);
}
}