为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

叮当猫咪 2022-09-01 18:14:38
在我的项目中,我们使用的是spring boot 2.0.3.Release。我们已经配置了多个数据源,默认情况下,Spring Boot选择Hikari数据源作为连接池。下面是我的代码。应用程序.属性first.datasource.jdbcUrl=jdbc:sqlserver://localhost:1433;databaseName=test1first.datasource.username=adminfirst.datasource.password=adminfirst.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDeriver first.datasource.hikari.maximumlPoolSize=50# Second Datasourcesecond.datasource.jdbcUrl=jdbc:postgresql://db-server-bar:5432/test2second.datasource.username=adminsecond.datasource.password=adminsecond.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDeriver second.datasource.hikari.maximumlPoolSize=50第一配置.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);  }}配置未选取我在属性文件中设置的最大池大小。当我签入显示为10的数据源对象时。如何覆盖在光数据源中设置的默认值?
查看完整描述

2 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

@Configuration

@ConfigurationProperties(prefix = "params.datasource")

public class JpaConfig extends HikariConfig {


    @Bean

    public DataSource dataSource() throws SQLException {

        return new HikariDataSource(this);

    }


}

应用程序.yml


params:

  datasource:

    driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDeriver

    jdbcUrl: jdbc:sqlserver://localhost:1433;databaseName=test1

    username: login

    password: password

    maximumPoolSize: 5


查看完整回答
反对 回复 2022-09-01
?
长风秋雁

TA贡献1757条经验 获得超7个赞

正如我所看到的,您尚未添加数据源属性 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();

  }

这对我有用。


查看完整回答
反对 回复 2022-09-01
  • 2 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信