Integração do Druid DataSource no Spring Boot

  1. Configuração das dependências Maven

No arquivo pom.xml, adicione as seguintes dependências dentro da tag <dependencies>:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.11</version>
</dependency>

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.36</version>
</dependency>
  1. Configuração da fonte de dados no YAML

No arquivo application.yml, insira as configurações da fonte de dados. Ajuste a URL, usuário e senha conforme seu ambiente:

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/seu_banco?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    username: root
    password: sua_senha
    druid:
      initialSize: 5
      minIdle: 5
      maxActive: 8
      maxWait: 60000
      timeBetweenEvictionRunsMillis: 60000
      minEvictableIdleTimeMillis: 30000
      validationQuery: SELECT 1
      testWhileIdle: true
      testOnBorrow: true
      poolPreparedStatements: true
      filters: stat,wall,log4j,config
      keepAlive: true
      connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
      web-stat-filter:
        enabled: true
        url-pattern: /*
        exclusions: .js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*
      stat-view-servlet:
        url-pattern: /druid/*
        allow: 127.0.0.1
        deny: 192.168.100.2
        reset-enable: false
        login-password: admin
        login-username: 123456
      max-pool-prepared-statement-per-connection-size: 20
  1. Criação da classe de configuração

Crie uma classe anotada com @Configuration para registrar manualmente o DataSource, o servlet de monitoramento e o filtro web:

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;

@Configuration
public class DruidConfiguracoes {

    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource dataSource() {
        return new DruidDataSource();
    }

    @Bean
    public ServletRegistrationBean<StatViewServlet> servletDeMonitoramento() {
        ServletRegistrationBean<StatViewServlet> registration = new ServletRegistrationBean<>(
            new StatViewServlet(), "/druid/*");
        
        Map<String, String> parametros = new HashMap<>();
        parametros.put("loginUsername", "admin");
        parametros.put("loginPassword", "123456");
        parametros.put("allow", "");
        parametros.put("resetEnable", "false");
        registration.setInitParameters(parametros);
        return registration;
    }

    @Bean
    public FilterRegistrationBean<WebStatFilter> filtroEstatisticas() {
        FilterRegistrationBean<WebStatFilter> registration = new FilterRegistrationBean<>();
        registration.setFilter(new WebStatFilter());
        registration.addUrlPatterns("/*");
        
        Map<String, String> initParams = new HashMap<>();
        initParams.put("exclusions", "*.js,*.css,/druid/*");
        registration.setInitParameters(initParams);
        return registration;
    }
}

Após essas configurações, inicie a aplicação Spring Boot e acesse:

http://127.0.0.1:8080/druid/login.html

Informe as credenciais definidas (usuário: admin, senha: 123456) para visualizar o painel de monitoramento do Druid.

Tags: Spring Boot Druid DataSource MySQL jdbc

Publicado em 7-8 20:30