How to Use Connection Pooling in Spring Boot
In Spring Boot, connection pooling is enabled by default using
HikariCP. You configure it by setting datasource properties in application.properties or application.yml, such as spring.datasource.hikari.maximum-pool-size to control pool size.Syntax
Spring Boot uses HikariCP as the default connection pool. You configure it by setting properties under spring.datasource.hikari in your configuration file.
spring.datasource.url: Database URLspring.datasource.username: Database userspring.datasource.password: User passwordspring.datasource.hikari.maximum-pool-size: Max connections in poolspring.datasource.hikari.minimum-idle: Minimum idle connections
properties
spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=secret spring.datasource.hikari.maximum-pool-size=10 spring.datasource.hikari.minimum-idle=5
Example
This example shows a Spring Boot application configured with HikariCP connection pooling to a MySQL database. It sets pool size and tests a simple query.
java + properties
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.jdbc.core.JdbcTemplate; @SpringBootApplication public class DemoApplication implements CommandLineRunner { @Autowired private JdbcTemplate jdbcTemplate; public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Override public void run(String... args) throws Exception { Integer count = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM users", Integer.class); System.out.println("User count: " + count); } } # application.properties spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=secret spring.datasource.hikari.maximum-pool-size=10 spring.datasource.hikari.minimum-idle=5 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Output
User count: 42
Common Pitfalls
Common mistakes include:
- Not setting the
driver-class-name, causing connection failures. - Setting pool size too high, which can exhaust database resources.
- Forgetting to configure the datasource URL or credentials correctly.
- Using multiple connection pools accidentally by defining extra datasource beans.
Always check logs for pool initialization errors.
properties
spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=secret # Missing driver class name causes failure # spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # Correct way: spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Quick Reference
Key properties for HikariCP in Spring Boot:
| Property | Description | Default |
|---|---|---|
| spring.datasource.hikari.maximum-pool-size | Maximum number of connections in the pool | 10 |
| spring.datasource.hikari.minimum-idle | Minimum idle connections maintained | 5 |
| spring.datasource.hikari.connection-timeout | Max wait time for a connection (ms) | 30000 |
| spring.datasource.hikari.idle-timeout | Max idle time before eviction (ms) | 600000 |
| spring.datasource.hikari.max-lifetime | Max lifetime of a connection (ms) | 1800000 |
Key Takeaways
Spring Boot uses HikariCP as the default connection pool with zero extra setup needed.
Configure connection pool size and timeouts via spring.datasource.hikari.* properties.
Always specify the correct driver class name to avoid connection errors.
Avoid setting pool size too large to prevent database overload.
Check application logs for pool initialization and connection issues.