我已将spring boot应用程序迁移到2.0,并发现了hikari连接池的一些问题。当我获取数据库数据时,这导致hikari cp超时ie。连接不可用。我不知道为什么在之前版本中这种方法正常工作。
因此我尝试在application.yml
中使用此配置的tomcat池,但它不起作用(正确的YAML格式化)。
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
我的pom.xml具有与数据库事物相关的这些依赖关系:
spring-boot-jpa
spring-boot-jdbc
jdbc7
如何排除hikari并使用tomcat连接池?
答案 0 :(得分:7)
我找到了解决方案。 这可以通过修改pom.xml来解决:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<exclusions>
<exclusion>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</dependency>
然而,hikari问题可能是默认的小型连接池。所以这个问题也可以通过这个改变来解决,但我自己没有验证。请注意其他人。这样的事情:
spring.datasource.hikari.connection-timeout=60000
spring.datasource.hikari.maximum-pool-size=5
答案 1 :(得分:0)
也:
spring:
datasource:
type: org.apache.tomcat.jdbc.pool.DataSource
使用
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</dependency>
答案 2 :(得分:0)
自Spring Boot 2.0发行以来,spring-boot-starter-jdbc和spring-boot-starter-data-jpa默认情况下会解析HikariCP依赖关系,并且spring.datasource.type属性将HikariDataSource作为默认值。在您的应用程序中,您应该从下面两者中将其排除。
implementation('org.springframework.boot:spring-boot-starter-data-jpa') {
exclude group: 'com.zaxxer', module: 'HikariCP'
}
implementation('org.springframework.boot:spring-boot-starter-jdbc') {
exclude group: 'com.zaxxer', module: 'HikariCP'
}
之后,您可以配置您喜欢使用的其他池化技术,如下所示 。 在您的application.yml文件中:
spring:
datasource:
type: org.apache.tomcat.jdbc.pool.DataSource
依赖:
implementation('org.apache.tomcat:tomcat-jdbc')