У меня есть приложение, которое использует пружинную загрузку 2 и регистрирует показатели из микрометра.Я хочу периодически регистрировать jdbc (mysql) min, max и активные соединения.Я также хочу использовать @RefreshScope для моего bean-компонента источника данных, чтобы предотвратить исключения привязки hikari при внедрении конфигов на лету из весеннего администратора.Я обнаружил, что когда я использую @RefreshScope для класса конфигурации / bean-компонента источника данных, JDBC не регистрируется в MeterRegistry.
Можно ли зарегистрировать JDBC в MeterRegistry с помощью @RefreshScope?
Есть ли способ прогамматически зарегистрировать JDBC с помощью MeterRegistry в моем определении компонента?
@Configuration
@EnableAutoConfiguration
@EnableTransactionManagement
@RefreshScope
public class DbConfig {
@Primary
@Bean(name = "dataSource")
@RefreshScope
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
Удаление @RefreshScope позволяет JDBC автоматически регистрироваться в MeterRegistry, но вызывает приведенное ниже исключение при изменении конфигурации: org.springframework.boot.context.properties.ConfigurationPropertiesBindException: Ошибка при создании bean-компонента с именем «dataSource»: невозможно привязать свойства к «HikariDataSource»: prefix = spring.datasource, ignoreInvalidFields = false, ignoreUnknownFields = true;Вложенное исключение - org.springframework.boot.context.properties.bind.BindException: не удалось связать свойства из «spring.datasource» с javax.sql.DataSource