Spring Boot配置数据库连接池

1.往application.properties添加内容

#connection pool
spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5
spring.datasource.validation-query=SELECT 1
spring.datasource.test-on-borrow=false
spring.datasource.test-while-idle=true
spring.datasource.time-between-eviction-runs-millis=18800
spring.datasource.jdbc-interceptors=ConnectionState;SlowQueryReport(threshold=0)

2.往logback.xml添加:

<logger name="org.springframework.boot" level="DEBUG"/>

3.启动应用


=========================
AUTO-CONFIGURATION REPORT
=========================


Positive matches:
-----------------

   DataSourceAutoConfiguration matched:
      - @ConditionalOnClass found required classes 'javax.sql.DataSource', 'org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType'; @ConditionalOnMissingClass did not find unwanted class (OnClassCondition)

   DataSourceAutoConfiguration#dataSourceInitializer matched:
      - @ConditionalOnMissingBean (types: org.springframework.boot.autoconfigure.jdbc.DataSourceInitializer; SearchStrategy: all) did not find any beans (OnBeanCondition)

   DataSourceAutoConfiguration.PooledDataSourceConfiguration matched:
      - AnyNestedCondition 1 matched 1 did not; NestedCondition on DataSourceAutoConfiguration.PooledDataSourceCondition.PooledDataSourceAvailable PooledDataSource found supported DataSource; NestedCondition on DataSourceAutoConfiguration.PooledDataSourceCondition.ExplicitType @ConditionalOnProperty (spring.datasource.type) did not find property 'type' (DataSourceAutoConfiguration.PooledDataSourceCondition)
      - @ConditionalOnMissingBean (types: javax.sql.DataSource,javax.sql.XADataSource; SearchStrategy: all) did not find any beans (OnBeanCondition)

   DataSourceConfiguration.Tomcat matched:
      - @ConditionalOnClass found required class 'org.apache.tomcat.jdbc.pool.DataSource'; @ConditionalOnMissingClass did not find unwanted class (OnClassCondition)
      - @ConditionalOnProperty (spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource) matched (OnPropertyCondition)

注意:
我在上面的数据源配置中添加了过滤器,并设置了延迟时间为0(故意设置很低,实际项目中请修改):

spring.datasource.jdbc-interceptors=ConnectionState;SlowQueryReport(threshold=0)
<think>好的,我现在需要回答用户关于Spring Boot如何配置数据库连接池的问题。首先,我得回忆一下Spring Boot中常见的数据库连接池配置方法。用户可能想知道如何配置,比如使用HikariCP,因为它是Spring Boot默认的连接池。 首先,我应该提到在application.properties或application.yml中配置相关属性。例如,设置数据源URL、用户名、密码,还有HikariCP的特定参数,比如最大连接数、最小空闲连接等。需要解释每个参数的作用,比如spring.datasource.hikari.maximum-pool-size控制最大连接数。 然后,可能需要提到如果用户想使用其他连接池,比如Druid,如何切换。这涉及到排除默认的HikariCP,并添加Druid的依赖,然后在配置文件中指定连接池类型。这部分需要详细说明步骤,确保用户能够正确替换。 另外,可以给出一个配置示例,展示具体的属性设置,并解释每个关键配置项的意义。例如,连接超时时间、空闲超时等参数的作用,以及如何根据应用需求调整这些参数。 还需要注意可能的问题,比如依赖未正确引入,或者配置项拼写错误,这些可能导致配置不生效。同时,提醒用户根据实际情况调整参数,比如数据库的最大连接数限制,避免配置过高导致资源耗尽。 最后,按照用户的要求,在回答后提出相关问题。这些问题应该围绕数据库连接池配置、不同连接池的比较、常见问题排查等,帮助用户进一步理解相关知识。 总结一下,回答的结构应该是:先说明默认配置方法,然后介绍如何切换其他连接池,给出代码示例,解释关键参数,最后提出相关问题。确保回答详尽,覆盖用户可能的需求和疑问。</think><< Spring Boot 配置数据库连接池主要通过以下步骤实现(以默认的 **HikariCP** 为例): ### 1. 添加数据库驱动依赖 在 `pom.xml` 中引入数据库驱动(如 MySQL): ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> ``` ### 2. 配置 `application.properties` 在配置文件中定义数据源参数: ```properties # 数据源基础配置 spring.datasource.url=jdbc:mysql://localhost:3306/test_db spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # HikariCP 连接池参数(可选,Spring Boot 默认使用 HikariCP) spring.datasource.hikari.maximum-pool-size=20 spring.datasource.hikari.minimum-idle=5 spring.datasource.hikari.idle-timeout=30000 spring.datasource.hikari.connection-timeout=20000 ``` ### 3. 自定义其他连接池(例如 **Druid**) 若需切换为 Druid: 1. **排除默认的 HikariCP**: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <exclusions> <exclusion> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> </exclusion> </exclusions> </dependency> ``` 2. **添加 Druid 依赖**: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> </dependency> ``` 3. **配置 Druid 参数**: ```properties spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.druid.initial-size=5 spring.datasource.druid.max-active=20 spring.datasource.druid.min-idle=5 ``` ### 解释 - **HikariCP 默认生效**:Spring Boot 2.x 开始默认使用 HikariCP,无需额外配置。 - **参数说明**: - `maximum-pool-size`:最大连接数(默认根据 CPU 核数计算)。 - `idle-timeout`:空闲连接超时时间(毫秒),超时后释放。 - `connection-timeout`:获取连接的超时时间。 - **切换连接池**:需显式排除默认实现并添加目标依赖。 ### 验证配置 通过注入 `DataSource` 并输出类名验证: ```java @Autowired private DataSource dataSource; @PostConstruct public void checkDataSource() { System.out.println("当前数据源: " + dataSource.getClass().getName()); } ``` ### 常见问题 - **配置不生效**:检查依赖冲突或属性拼写错误。 - **连接泄漏**:设置 `leak-detection-threshold`(HikariCP)或启用 Druid 的监控功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值