猿问

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

在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支持的许多属性(显然是设计使然)。因此,许多属性未按照以下记录传递:HikariDataSourcemaximum-pool-sizespring-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


幕布斯7119047
浏览 138回答 1
1回答

慕姐4208626

extends ,它具有您想要设置的所有附加属性HikariDataSource。HikariConfigSpring 会将任何带有前缀的属性直接绑定spring.datasource.hikari到 中DataSource,而不是绑定到DataSourceProperties对象中。它是通过ConfigurationPropertiesBindingPostProcessor在后期使用来完成的。
随时随地看视频慕课网APP

相关分类

Java
我要回答