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

如何在spring boot 2.0.x中覆盖默认连接池限制

卢涵畅
2023-03-14
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
@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数据源中设置的默认值?

共有1个答案

申颖逸
2023-03-14

正如我所看到的,您还没有添加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();
  }

这对我管用。

 类似资料:
  • 我有一个RESTAPI,我不想强迫客户端发送请求参数。我有将近400个api方法,我不想将所有参数设置为“required=false” 我想覆盖Spring RequestParam的默认行为。我想将RequestParam接口的“required”属性的默认值设置为“false”。 有什么方法可以覆盖它吗?如果我不能或这不是最佳实践,有什么方法可以解决上述问题。

  • 如果是真的,是否有人有任何书目,我可以阅读Hikaricp的默认属性。 ----------------添加---------------------------- 我在一本书中找到了以下信息:

  • 安装应用程序时,如何默认启用屏幕覆盖权限。 现在我面临一些问题,当捕获图像询问运行时权限时,一些设备不允许它打开屏幕覆盖设置对话框的权限。在用户看来,他们不知道为什么对话框显示以及他们做了什么。 当打开覆盖设置屏幕时,一些应用程序会自动启用屏幕覆盖权限。 下面我使用代码。 此代码直接打开覆盖设置屏幕。所有应用程序的显示列表。 我的要求是显示权限特定的应用程序或启用覆盖权限而无需用户交互。 做需要.

  • Curl具有手动指定主机解析到哪个IP的功能。例如: 这在使用HTTPS时特别有用。如果它只是一个HTTP请求,我可以通过直接指定IP地址并添加主机头来实现同样的效果。但在HTTPS中,这将中断连接,因为SSL证书主机将与IP地址而不是主机头进行比较。 我的问题是,如何在Java中实现同样的事情?

  • 我目前正在做一个项目,在这个项目中,我们有一个jenkins实例与一个单独的网站并排运行,工作流程是这样的,用户需要点击网站中的链接,从而触发jenkins实例中的jenkins作业。 触发的jenkins作业有几十个参数,我们目前正在做的是,该网站将使用javascript构建一个如下URL: https://JENKINS_HOST/作业/JOB_NAME/build with Paramet