0
0
SpringbootHow-ToBeginner · 4 min read

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 URL
  • spring.datasource.username: Database user
  • spring.datasource.password: User password
  • spring.datasource.hikari.maximum-pool-size: Max connections in pool
  • spring.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:

PropertyDescriptionDefault
spring.datasource.hikari.maximum-pool-sizeMaximum number of connections in the pool10
spring.datasource.hikari.minimum-idleMinimum idle connections maintained5
spring.datasource.hikari.connection-timeoutMax wait time for a connection (ms)30000
spring.datasource.hikari.idle-timeoutMax idle time before eviction (ms)600000
spring.datasource.hikari.max-lifetimeMax 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.