我正在尝试打开具有多个数据源的Hikari的自动提交功能,但是我没有任何运气。我正在使用Spring Boot 2(2.0.3.RELEASE)。这是我的配置:
application.properties
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
如何关闭此连接池上的自动提交?
谢谢!
答案 0 :(得分:0)
您的问题的替代解决方案,将默认自动提交属性配置为 false 。它也应该起作用。
spring.datasource.ucm.default-auto-commit=false
答案 1 :(得分:0)
将假的default-auto-commit设为假即可。
spring.datasource.ucm.default-auto-commit=false
答案 2 :(得分:0)
我知道这已经很晚了,但是这个问题使我的大脑爆炸了大约2天,并且此帖子位于google搜索的顶部,因此我将在此处为其他人发布解决方案。
实际上很简单,只是我在https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-two-datasources
的文档中错过了它简短地记录一下故事,请确保在创建课程之前添加.type(HikariDataSource.class)
。
另外,如果您使用jhipster,则还应将配置指向@ConfigurationProperties("spring.datasource.other.hikari")
之类的hikari部分