【问题标题】:Developing MicroServices using spring boot使用 Spring Boot 开发微服务
【发布时间】:2025-11-29 01:20:21
【问题描述】:

我正在尝试使用 spring boot+jpa +hibernate 开发微服务。但是每次我运行我的代码时,它都会默认创建 10 个与数据库(postgresql)的连接。我配置了我的 application.yml 但它仍然没有覆盖数据源属性。有人可以帮我摆脱困境吗?

spring:
    dataSource:
        tomcat:
             max-active: 5
             max-idle: 5
             min-idle: 5
             initial-size: 5
             commitOnReturn: True
             maxAge: 300000
             min-evictable-idle-time-millis: 20000
             max-threads: 10
             validation-query: SELECT 1
             test-on-borrow: true
             validation-interval: 300000

在这里,我将添加我的 GetApp.java 类。检查一下:

package com.pwc.nic.main;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.
DataSourceTransactionManagerAutoConfiguration;

进口
org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;

@SpringBootApplication( 排除 = {

        DataSourceAutoConfiguration.class,
        HibernateJpaAutoConfiguration.class,
        DataSourceTransactionManagerAutoConfiguration.class
},
scanBasePackages = { "com.pwc.nic" })

公共类 GetApp {

public static void main(String[] args) {
    SpringApplication.run(GetApp.class, args);
}

}

【问题讨论】:

  • 我猜你配置了错误的数据源。为什么是 spring.datasource.tomcat 而不是 spring.datasource.hikari?
  • 但是我使用的@SimonMartinelli 数据源是由tomcat 而不是hikari。这就是我使用上述配置的原因。如有任何疑问,请恢复。
  • 我怀疑 Tomcat 数据源没有被使用。使用配置显式设置数据源:spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource 再试一次
  • 但是如果你使用 tomcat 数据源你必须在 tomcat configuratoin 中配置它而不是在 Spring Boot 中
  • @Ajinkya 根据您的建议,我在 application.yml 文件中使用了 spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource 但它没有用。但没有。连接数为 10。

标签: postgresql hibernate tomcat spring-data-jpa


【解决方案1】:

根据 spring boot 文档,您应该使用 spring.datasource.max-active 属性。看这里 https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

此外,根据 tomcat 文档,您应该尝试 initialSize 属性,该属性表示创建池时建立的初始连接数。看这里http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#Common_Attributes

【讨论】:

  • 感谢您的回复。但是我已经使用了 max-active 属性,但它仍然每次都会创建 10 个新连接。
  • 我认为您应该尝试 initialSize 属性,该属性表示创建池时建立的初始连接数。见这里tomcat.apache.org/tomcat-7.0-doc/…