首页 > 解决方案 > Spring Boot application.yml 全局设置数据源属性,被忽略

问题描述

我有一个配置了application.yml文件的 Spring Boot 1.5 应用程序。我需要管理默认的连接池 - Tomcat。

问题是它application.yml具有datasources多个数据源的属性。我的全局datasource.max-active=10(更新:datasource.tomcat.max-active=10也被忽略)被完全忽略(我创建了一个测试来查看正在注入的数据源,默认maxActive设置为 100)。我必须将它分别添加到每个数据源中,以使池按我需要的方式工作。

看起来像这样(这application.yml只是其中的一部分),它使用 来创建数据源maxActive=10,但是有很多重复:

spring:
  .... #bunch of stuff, deleted for simplicity
  datasource: #Added by me, ignored by Spring
    max-active: 10 #Added by me, ignored by Spring
datasources:
  datasource1:
    url: jdbc:mysql://url:port1
    max-active: 10 #Added by me, works
  datasource2:
    url: jdbc:mysql://url:port2
    max-active: 10 #Added by me, works

max-active问题:全局设置属性以避免这种重复的正确方法是什么?谢谢。

标签: javaspringspring-bootconnection-pooling

解决方案


当您使用多个数据源时,spring boot 不提供默认的数据源自动配置。这也意味着您必须为每个数据源提供连接池属性。我认为不可能在全球范围内设置它。相反,您可以使用占位符设置一次并在任何地方使用它。

custom:
 max-active: 10 
spring:
datasources:
  datasource1:
    url: jdbc:mysql://url:port1
    max-active: ${custom.max-active}
  datasource2:
    url: jdbc:mysql://url:port2
    max-active: ${custom.max-active}

您可以在此处找到更多信息:Spring Boot 中使用多个数据源时如何设置多个连接池?


推荐阅读