gpt4 book ai didi

java - 如何支持连接池供应商特定的 DataSourceProperties 配置

转载 作者:行者123 更新时间:2023-12-02 09:40:12 25 4
gpt4 key购买 nike

org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration :

@Bean
@ConfigurationProperties(prefix = "spring.datasource.hikari")
public HikariDataSource dataSource(DataSourceProperties properties) {
HikariDataSource dataSource = createDataSource(properties, HikariDataSource.class);
if (StringUtils.hasText(properties.getName())) {
dataSource.setPoolName(properties.getName());
}
return dataSource;
}

参数类型DataSourceProperties缺少目标类型 HikariDataSource 支持的许多属性(例如 maximum-pool-size 和许多其他)(显然是设计使然)。因此,许多属性没有按照以下记录传递:spring-configuration-metadata.json

{
"name": "spring.datasource.hikari.auto-commit",
"type": "java.lang.Boolean",
"sourceType": "com.zaxxer.hikari.HikariDataSource"
},
{
"name": "spring.datasource.hikari.catalog",
"type": "java.lang.String",
"sourceType": "com.zaxxer.hikari.HikariDataSource"
}

那么我应该定义 dataasource bean 并将属性设置为 HikariDataSource那么将上述属性(spring.datasource.hikari.auto-commit ...等)作为自动配置属性的一部分有什么意义呢?

最佳答案

HikariDataSource 扩展了 HikariConfig,它具有您想要设置的所有附加属性。

Spring 会将任何带有前缀 spring.datasource.hikari 的属性直接绑定(bind)到 DataSource 中,而不是绑定(bind)到 DataSourceProperties 对象中。

这是通过在稍后阶段使用 ConfigurationPropertiesBindingPostProcessor 来完成的。

关于java - 如何支持连接池供应商特定的 DataSourceProperties 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57146651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com