Configuring JDBC and Druid Data Sources in Spring Boot

Project Dependencies for Standard JDBC

To configure a data source using Spring Boot's default JDBC support, typically backed by Tomcat JDBC, include the folllowing dependencies in your Maven pom.xml file. This configuration also integrates MyBatis for database mapping.

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.2</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

Application Properties Configuration

In the application.properties file, define the connection parameters and MyBatis mapper locations. This sets up the basic environment for database connectivity.

server.port=8081

# Database Configuration
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/app_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=db_user
spring.datasource.password=db_pass
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# MyBatis Configuration
mybatis.mapper-locations=classpath:mapper/*.xml

Integrating Druid Data Source

To utilize the Alibaba Druid connection pool, which provides robust monitoring and filtering capabilities, add the Druid dependency to your project alongside the standard starters.

<dependencies>
    <!-- Existing dependencies for web, jdbc, mybatis, and mysql -->
    
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.22</version>
    </dependency>
</dependencies>

YAML Configuration for Druid

Using application.yml, specify the data source type as DruidDataSource and configure the pool properties such as connection size, validation queries, and filters for SQL monitoring and firewall protection.

spring:
  datasource:
    # Basic Database Connection
    url: jdbc:mysql://localhost:3306/demo_db
    username: admin
    password: secret_password
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource

    # Druid Connection Pool Settings
    initial-size: 5
    min-idle: 5
    max-active: 25
    max-wait: 60000
    time-between-eviction-runs-millis: 60000
    min-evictable-idle-time-millis: 300000
    validation-query: SELECT 1
    test-while-idle: true
    test-on-borrow: false
    test-on-return: false
    pool-prepared-statements: true

    # Filters for monitoring and security
    filters: stat,wall,slf4j
    max-pool-prepared-statement-per-connection-size: 20
    use-global-data-source-stat: true
    connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=2000

mybatis:
  # MyBatis XML Mapper Locations
  mapper-locations: classpath:mybatis/mapper/*.xml
  # Global Configuration File
  config-location: classpath:mybatis/config.xml

Tags: spring-boot JDBC druid MyBatis MySQL

Posted on Fri, 15 May 2026 07:30:52 +0000 by guttyguppy