我有一个配置有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属性的正确方法是什么?
谢谢。

最佳答案

当您使用多个数据源时,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}


您可以在这里找到更多信息:How to setup multiple connection pools when multiple datasources are used in Spring Boot?

关于java - Spring Boot application.yml全局设置数据源属性,被忽略,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59459970/

10-13 08:03