web-dev-qa-db-ja.com

Spring Boot 2は、複数のデータソースでHikariの自動コミットを無効にします

複数のデータソースを使用して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

この接続プールで自動コミットをオフにするにはどうすればよいですか?

3
csyperski

Spring Boot 2.0.4.RELEASEを使用していますが、同じ問題が発生しました。動作しないプロパティを示す関連する投稿で何時間も過ごしました...

.hikariを削除するとうまくいきました。

spring.datasource.ucm.autocommit=false
2
Water

問題の代替ソリューションとして、default-auto-commitプロパティをfalseとして構成します。 )。それも機能するはずです。

spring.datasource.ucm.default-auto-commit=false

Spring Boot Ref 1

default.auto-commit

0

Falsedefault-auto-commitが機能するはずです。

spring.datasource.ucm.default-auto-commit=false
0
Eklavya

私はこれが非常に遅いことを知っていますが、この問題は私の脳を約2日間爆発させ、この投稿はグーグル検索の一番上にあるので、他の人のためにここに解決策を投稿します。

これは実際には非常に単純ですが、ここのドキュメントで見逃しただけです https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-two-datasources

短編小説では、クラスを作成する前に、必ず.type(HikariDataSource.class)を追加してください。

また、jhipsterを使用する場合は、次のように構成をhikari部分にポイントする必要があります@ConfigurationProperties("spring.datasource.other.hikari")

0
Adrian Badarau