java - Spring Boot 2 使用多个数据源禁用 Autocommit Hikari
问题描述
我正在尝试使用多个数据源关闭 Hikari 上的自动提交,但我没有任何运气。我正在使用 Spring Boot 2 (2.0.3.RELEASE)。这是我的配置:
应用程序属性
spring.datasource.primary.driver=com.mysql.cj.jdbc.Driver
spring.datasource.primary.url=jdbc:mysql://localhost:3306/spark?autoReconnect=true
spring.datasource.primary.username=xxxx
spring.datasource.primary.password=xxxx
spring.datasource.primary.max-active=100
spring.datasource.primary.max-idle=5
spring.datasource.primary.min-idle=1
spring.datasource.primary.test-while-idle=true
spring.datasource.primary.test-on-borrow=true
spring.datasource.primary.validation-query=SELECT 1
spring.datasource.primary.time-between-eviction-runs-millis=5000
spring.datasource.primary.min-evictable-idle-time-millis=60000
spring.datasource.ucm.driver=com.mysql.cj.jdbc.Driver
spring.datasource.ucm.url=jdbc:mysql://localhost:3306/usercentral?autoReconnect=true
spring.datasource.ucm.username=xxx
spring.datasource.ucm.password=xxx
spring.datasource.ucm.max-active=100
spring.datasource.ucm.test-while-idle=true
spring.datasource.ucm.test-on-borrow=true
spring.datasource.ucm.validation-query=SELECT 1
spring.datasource.ucm.time-between-eviction-runs-millis=5000
spring.datasource.ucm.min-evictable-idle-time-millis=60000
spring.datasource.ucm.hikari.auto-commit=false # <- Not working
这是我设置数据源的配置类
@Primary
@Bean
@ConfigurationProperties("spring.datasource.primary")
public DataSourceProperties primaryDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@Primary
@ConfigurationProperties("spring.datasource.primary")
public DataSource primaryDataSource() {
return primaryDataSourceProperties().initializeDataSourceBuilder().build();
}
@Bean
@ConfigurationProperties("spring.datasource.ucm")
public DataSourceProperties ucmDataSourceProperties() {
return new DataSourceProperties();
}
@Bean(name="ucmDataSource")
@ConfigurationProperties("spring.datasource.ucm")
public DataSource ucmDataSource() {
return ucmDataSourceProperties().initializeDataSourceBuilder().build();
}
这是创建池时输出的内容:
-2018-08-23 15:48:22.845 -DEBUG 21455 --- [nio-8081-exec-1] com.zaxxer.hikari.HikariConfig : 1151 : allowPoolSuspension.............false
-2018-08-23 15:48:22.846 -DEBUG 21455 --- [nio-8081-exec-1] com.zaxxer.hikari.HikariConfig : 1151 : autoCommit......................true
-2018-08-23 15:48:22.846 -DEBUG 21455 --- [nio-8081-exec-1] com.zaxxer.hikari.HikariConfig : 1151 : catalog.........................none
-2018-08-23 15:48:22.846 -DEBUG 21455 --- [nio-8081-exec-1] com.zaxxer.hikari.HikariConfig : 1151 : connectionInitSql...............none
如何关闭此连接池的自动提交?
解决方案
我知道这已经很晚了,但是这个问题让我的大脑爆炸了约 2 天,这篇文章在谷歌搜索的顶部,所以我会在这里为其他人发布解决方案。
它实际上很简单,只是我在这里的文档中错过了它https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-two-datasources
长话短说,确保.type(HikariDataSource.class)
在构建类之前添加。
此外,如果您使用 jhipster,您还应该像这样将您的配置指向 hikari 部分@ConfigurationProperties("spring.datasource.other.hikari")
推荐阅读
- node.js - 我试图用 express 和 fileupload 上传文件,但我无法让它工作
- mysql - 当行包含某些特定值时,如何在具有另一个表的外键的表上使 INSERT 失败?
- javascript - 如何将变量从 js 文件传递到 .vue 文件
- python - 退出while循环后日期变量不会改变
- mongodb - 使用 x509 证书连接到服务
- javascript - 如何通过 socket.io 发出 html 视频数据?
- vuejs2 - firebase身份验证googlesignin vuejs后的登录路由
- scala - 为方法创建 Map 并运行所有方法
- javascript - 我如何让我的不和谐机器人像这个盒子一样写?
- python - 如何使 qtablewidget 中过滤器中使用的菜单栏在 pyqt5 中可滚动?