Java 如何覆盖SpringBoot2.0.x中的默认连接池限制

Java 如何覆盖SpringBoot2.0.x中的默认连接池限制,java,spring,spring-boot,hikaricp,Java,Spring,Spring Boot,Hikaricp,在我的项目中,我们使用的是SpringBoot2.0.3.0版本。我们已经配置了多个数据源,默认情况下,spring boot为连接池选择Hikari数据源。下面是我的代码 应用程序属性 first.datasource.jdbcUrl=jdbc:sqlserver://localhost:1433;databaseName=test1 first.datasource.username=admin first.datasource.password=admin first.datasource

在我的项目中,我们使用的是SpringBoot2.0.3.0版本。我们已经配置了多个数据源,默认情况下,spring boot为连接池选择Hikari数据源。下面是我的代码

应用程序属性

first.datasource.jdbcUrl=jdbc:sqlserver://localhost:1433;databaseName=test1
first.datasource.username=admin
first.datasource.password=admin
first.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDeriver
 first.datasource.hikari.maximumlPoolSize=50
# Second Datasource
second.datasource.jdbcUrl=jdbc:postgresql://db-server-bar:5432/test2
second.datasource.username=admin
second.datasource.password=admin
second.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDeriver
 second.datasource.hikari.maximumlPoolSize=50
FirstConfig.java

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
  entityManagerFactoryRef = "entityManagerFactory",
  basePackages = { "com.org.first.repo" }
)
public class FirstConfig {

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

  @Primary
  @Bean(name = "entityManagerFactory")
  public LocalContainerEntityManagerFactoryBean 
  entityManagerFactory(
    EntityManagerFactoryBuilder builder,
    @Qualifier("dataSource") DataSource dataSource
  ) {
    return builder
      .dataSource(dataSource)
      .packages("com.org.first.entity")
      .persistenceUnit("first")
      .build();
  }

  @Primary
  @Bean(name = "transactionManager")
  public PlatformTransactionManager transactionManager(
    @Qualifier("entityManagerFactory") EntityManagerFactory 
    entityManagerFactory
  ) {
    return new JpaTransactionManager(entityManagerFactory);
  }
}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
  entityManagerFactoryRef = "barEntityManagerFactory",
  transactionManagerRef = "barTransactionManager",
  basePackages = { "com.org.second.repo" }
)
public class SecondConfig{

  @Bean(name = "barDataSource")
  @ConfigurationProperties(prefix = "second.datasource")
  public DataSource dataSource() {
    return DataSourceBuilder.create().build();
  }

  @Bean(name = "barEntityManagerFactory")
  public LocalContainerEntityManagerFactoryBean 
  barEntityManagerFactory(
    EntityManagerFactoryBuilder builder,
    @Qualifier("barDataSource") DataSource dataSource
  ) {
    return
      builder
        .dataSource(dataSource)
        .packages("com.org.second.entity")
        .persistenceUnit("second")
        .build();
  }
  @Bean(name = "barTransactionManager")
  public PlatformTransactionManager barTransactionManager(
    @Qualifier("barEntityManagerFactory") EntityManagerFactory
    barEntityManagerFactory
  ) {
    return new JpaTransactionManager(barEntityManagerFactory);
  }
}
SecondConfig.java

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
  entityManagerFactoryRef = "entityManagerFactory",
  basePackages = { "com.org.first.repo" }
)
public class FirstConfig {

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

  @Primary
  @Bean(name = "entityManagerFactory")
  public LocalContainerEntityManagerFactoryBean 
  entityManagerFactory(
    EntityManagerFactoryBuilder builder,
    @Qualifier("dataSource") DataSource dataSource
  ) {
    return builder
      .dataSource(dataSource)
      .packages("com.org.first.entity")
      .persistenceUnit("first")
      .build();
  }

  @Primary
  @Bean(name = "transactionManager")
  public PlatformTransactionManager transactionManager(
    @Qualifier("entityManagerFactory") EntityManagerFactory 
    entityManagerFactory
  ) {
    return new JpaTransactionManager(entityManagerFactory);
  }
}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
  entityManagerFactoryRef = "barEntityManagerFactory",
  transactionManagerRef = "barTransactionManager",
  basePackages = { "com.org.second.repo" }
)
public class SecondConfig{

  @Bean(name = "barDataSource")
  @ConfigurationProperties(prefix = "second.datasource")
  public DataSource dataSource() {
    return DataSourceBuilder.create().build();
  }

  @Bean(name = "barEntityManagerFactory")
  public LocalContainerEntityManagerFactoryBean 
  barEntityManagerFactory(
    EntityManagerFactoryBuilder builder,
    @Qualifier("barDataSource") DataSource dataSource
  ) {
    return
      builder
        .dataSource(dataSource)
        .packages("com.org.second.entity")
        .persistenceUnit("second")
        .build();
  }
  @Bean(name = "barTransactionManager")
  public PlatformTransactionManager barTransactionManager(
    @Qualifier("barEntityManagerFactory") EntityManagerFactory
    barEntityManagerFactory
  ) {
    return new JpaTransactionManager(barEntityManagerFactory);
  }
}
配置没有选择我在属性文件中设置的最大池大小。当我签入显示为10的数据源对象时。如何覆盖hikari数据源中设置的默认值

@Configuration
@ConfigurationProperties(prefix = "params.datasource")
public class JpaConfig extends HikariConfig {

    @Bean
    public DataSource dataSource() throws SQLException {
        return new HikariDataSource(this);
    }

}
application.yml

params:
  datasource:
    driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDeriver
    jdbcUrl: jdbc:sqlserver://localhost:1433;databaseName=test1
    username: login
    password: password
    maximumPoolSize: 5
application.yml

params:
  datasource:
    driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDeriver
    jdbcUrl: jdbc:sqlserver://localhost:1433;databaseName=test1
    username: login
    password: password
    maximumPoolSize: 5

正如我所看到的,您还没有添加datasource属性bean

请创建一个dataSourceProperties bean

 @Bean
  @Primary
  @ConfigurationProperties(prefix = "first.datasource")
  public DataSourceProperties dataSourceProperties() {
    return new DataSourceProperties();
  }

  @Primary
  @Bean(name = "dataSource")
  @ConfigurationProperties(prefix = "first.datasource")
  public DataSource dataSource() {
    return dataSourceProperties().initializeDataSourceBuilder().build();
  }

这对我很有用。

正如我所见,您还没有添加datasource属性bean

请创建一个dataSourceProperties bean

 @Bean
  @Primary
  @ConfigurationProperties(prefix = "first.datasource")
  public DataSourceProperties dataSourceProperties() {
    return new DataSourceProperties();
  }

  @Primary
  @Bean(name = "dataSource")
  @ConfigurationProperties(prefix = "first.datasource")
  public DataSource dataSource() {
    return dataSourceProperties().initializeDataSourceBuilder().build();
  }

这对我有用。

谢谢。这正是我想要的。谢谢。这正是我想要的。