gpt4 book ai didi

spring-boot - Hikari - Spring Boot 忽略了 hikari 属性

转载 作者:行者123 更新时间:2023-12-04 00:27:53 27 4
gpt4 key购买 nike

我有一个 Spring Boot 2 应用程序,它有两个数据源。两个数据源都可以工作,但是我无法更改诸如最大池大小之类的属性,我的更改没有生效。

我在 application.properties 文件中配置了我的两个数据源;

spring.datasource.url=jdbc:sqlserver://server;databaseName=ProductionMetrics
spring.datasource.username=ProductionMeusernametricsUser
spring.datasource.password=password
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.hikari.maximum-pool-size=20

# Products
trwbi.datasource.url=jdbc:sqlserver://server;databaseName=TRWBI
trwbi.datasource.username=username
trwbi.datasource.password=password
trwbi.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
trwbi.datasource.hikari.maximum-pool-size=20

然后,我像这样设置两个数据源;
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "defaultEntityManagerFactory",
transactionManagerRef = "defaultTransactionManager",
basePackages = {
"com.domain.visualisation.shared.repository"
}
)
public class DefaultDbConfig {

@Primary
@Bean(name = "defaultDataSource")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource defaultDataSource() {
return DataSourceBuilder.create().build();
}

@Primary
@Bean(name = "defaultEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean
entityManagerFactory(
EntityManagerFactoryBuilder builder,
@Qualifier("defaultDataSource") DataSource dataSource
) {
return builder
.dataSource(dataSource)
.packages("com.domain.visualisation.shared.entities")
.persistenceUnit("default")
.build();
}

@Primary
@Bean(name = "defaultTransactionManager")
public PlatformTransactionManager defaultTransactionManager(
@Qualifier("defaultEntityManagerFactory") EntityManagerFactory defaultEntityManagerFactory
) {
return new JpaTransactionManager(defaultEntityManagerFactory);
}
}

当我打开 Hikari 的调试时,我可以看到 maximumPoolSize 值仍然是 10,而不是我定义的值 20。我尝试应用其他属性,例如泄漏检测阈值、池名称和空闲超时,但这些都没有被应用。

为什么它们没有被应用?

最佳答案

在多个数据源的情况下,并且因为您使用的是 DataSourceBuilder,以下工作。

spring.datasource.maximum-pool-size=20
trwbi.datasource.maximum-pool-size=20

同样在您的情况下,我建议关闭自动配置:
@SpringBootApplication(scanBasePackages = {...},
exclude = {DataSourceAutoConfiguration.class} )
@EnableSwagger2
public class Application {
....

如果您不使用构建器,而是使用自动配置,则使用
spring.datasource.hikari.minimumIdle=1
spring.datasource.hikari.maximum-pool-size=3

关于spring-boot - Hikari - Spring Boot 忽略了 hikari 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54904037/

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