英文:
Hikari doesn't read configuration from properties file in SpringBoot project
问题
你好,我正在使用Spring Boot和Hikari进行数据库连接。Spring Boot版本是2.2.5.RELEASE,Hikari版本是3.4.2。然而,当我运行我的项目时,它总是使用Hikari的默认配置值,而不是使用我的属性文件中的值。以下是我的属性文件内容:
spring.datasource.jdbcUrl=#####
spring.datasource.username=###
spring.datasource.password=###
spring.datasource.hikari.maximumPoolSize=4
spring.datasource.hikari.connectionTimeout=300000
这是我的应用程序配置中的数据源:
@Primary
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource DBDatasource() {
return DataSourceBuilder.create().build();
}
这是输出结果:
10:23:19.050 [main] DEBUG com.zaxxer.hikari.HikariConfig - maxLifetime.....................1800000
10:23:19.050 [main] DEBUG com.zaxxer.hikari.HikariConfig - maximumPoolSize.................10
有什么我漏掉的吗?
英文:
Hi I'm using Springboot and Hikari for db connection in my project.
The springboot version is 2.2.5.RELEASE and Hikari is 3.4.2. However, when I run my project, it always use Hikari default config value rather than using values in my properties file.
Here is my properits:
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-html -->
spring.datasource.jdbcUrl=#####
spring.datasource.username=###
spring.datasource.password=###
spring.datasource.hikari.maximumPoolSize=4
spring.datasource.hikari.connectionTimeout=300000
<!-- end snippet -->
Here is my datasource in application configuration:
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-html -->
@Primary
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource DBDatasource() {
return DataSourceBuilder.create().build();
}
<!-- end snippet -->
Here is the output :
10:23:19.050 [main] DEBUG com.zaxxer.hikari.HikariConfig -maxLifetime.....................1800000
10:23:19.050 [main] DEBUG com.zaxxer.hikari.HikariConfig - maximumPoolSize.................10
Anything I missed ?
答案1
得分: -1
你正在覆盖默认的 DataSource 自动配置。以下是如何正确初始化 Hikari 数据源的方法:
@Bean
@ConfigurationProperties(prefix = "spring.datasource.hikari")
HikariDataSource dataSource(DataSourceProperties properties) {
HikariDataSource dataSource = properties
.initializeDataSourceBuilder()
.type(HikariDataSource.class).build();
if (StringUtils.hasText(properties.getName())) {
dataSource.setPoolName(properties.getName());
}
return dataSource;
}
英文:
You're overriding the default DataSource auto configuration. Here's how you can properly intialize hikari datasource:
@Bean
@ConfigurationProperties(prefix = "spring.datasource.hikari")
HikariDataSource dataSource(DataSourceProperties properties) {
HikariDataSource dataSource = properties
.initializeDataSourceBuilder()
.type(HikariDataSource.class).build();
if (StringUtils.hasText(properties.getName())) {
dataSource.setPoolName(properties.getName());
}
return dataSource;
}
答案2
得分: -1
明白了,只需在属性文件中进行配置,无需使用 'hikari':
spring.datasource.maximumPoolSize=4
英文:
Figured it out just need to config in properties file without 'hikari' :
spring.datasource.maximumPoolSize=4
专注分享java语言的经验与见解,让所有开发者获益!
评论