当前位置: 首页 > 知识库问答 >
问题:

Hikari-Spring Boot忽略Hikari属性

华旭
2023-03-14
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);
    }
}

为什么它们没有被应用?

共有1个答案

呼延智明
2023-03-14

如果有多个数据源,并且由于您使用的是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
 类似资料:
  • Hikari CP版本:2.7.4 这实际上不是一个问题,而是一些疑问。a) maxLifetime:30分钟后退出连接。它是否也会在终止时自动创建新连接,或者等待新请求,然后创建新连接?考虑到池的空闲时间超过minIdle。 b)idle time out:10分钟不活动后会掉线?但是10分钟太长了。如果我将它标记为10s(从代码中可以看出,10是最小值)可以吗?否则,总会有比最小连接数高的连接

  • 默认情况下,Spring数据JPA或Hibernate的自动提交设置为false。这听起来很合理,因为这些框架与实体一起工作,并且对实体的更新可能涉及通过多个SQL查询对多个表的更新。因此,通过将auto-commit设置为false并显式控制事务,这些框架确保了对实体的更改是原子的和一致的。 但现在Hikari是spring data jpa的默认连接池提供程序,在查看应用程序日志时,我看到Hi

  • 你好,我在我的项目中使用Spring Boot和Hikari进行db连接。spinger引导版本是2.2.5.RELEASE,Hikari是3.4.2。但是,当我运行我的项目时,它总是使用Hikari默认配置值,而不是使用我的属性文件中的值。这是我的属性: 这是我在应用程序配置中的数据源: 下面是输出:10:23:19.050[main]DEBUG com . zax xer . hikari .

  • 我的 Spring 启动应用程序中有两个数据源,因此我无法使用标准数据源。其中之一的定义如下: 上面yaml文件中定义的Hikari属性没有被考虑在内(可能是由于)。要求是使用默认的 Hikari 属性并覆盖上面定义的属性。请建议如何做到这一点。

  • 我请你们所有人回答我在HikariCP文档中找不到的问题。假设我设置了以下池参数: 注意:我不是数据库的所有者,我不能配置它或让它重新配置以满足我的需要。我也无法访问它的配置。 我们的设置是Spring 4.1.6,Hibernate 4.3.7和JPA 2.1 API,Hikari 2.1.0

  • 我有一个应用程序,它将C3p0与Hibernate5和Hibernate使用。我想尝试使用Hikari,但我无法运行该应用程序。 专家 Hibernate版本为:5.2.17.Final Spring配置 我尝试了上述方法的不同排列,包括将用户名和密码直接传递给数据源: 但是我总是以这个错误结束: 这是由光函数引起的: