java - 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
问题:全局设置属性以避免这种重复的正确方法是什么?谢谢。
解决方案
当您使用多个数据源时,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 中使用多个数据源时如何设置多个连接池?
推荐阅读
- javascript - 使用 css 在单击更多按钮时带来上下文菜单
- ajax - Laravel AJAX 分页从旧数据中提取行
- c# - 如何以编程方式创建 MapModel3D?
- android - 拦截房间迁移错误以重新创建数据库
- stripe-payments - Stripe ACH:如何计算申请和条带处理费用
- javascript - 计算幂和的问题
- json - TypeScript - 导入 JSON 文件并分配给使用接口声明的变量
- mysql - 如何创建一个表,其中一列包含具有不同 id 的所有行的相同值?(请参阅布局以了解清楚)
- java - 尝试发送帖子并总是收到错误的请求
- python - Python YAML 转储特殊字符和多行