Spring Boot 使用阿里巴巴 Druid 数据源

Druid 是 Java 语言中最好的数据库连接池。Druid 能够提供强大的监控和扩展功能。

1、引入依赖

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

2、配置数据源的基本参数

server:
  port: 8771

#Spring
spring:
  datasource:
    username: dev
    password: 123456
    url: jdbc:mysql://localhost:3306/htcpp?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      #最大活跃数
      max-active: 20
      #初始化数量
      initial-size: 1
      #最大连接等待超时时间
      max-wait: 60000
      min-idle: 1
      #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000
      #配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 300000
      #打开PSCache,并且指定每个连接PSCache的大小
      pool-prepared-statements: true
      max-open-prepared-statements: 20
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      async-init: true
      #配置监控统计拦截的filters
      filters: stat,wall,log4j

这样已经可以使用 Druid 了,如果还需要使用 Druid 的监控功能,还需要额外的配置。

引入配置类,当然这些配置完全可以在配置文件中进行设置,可以自由选择是写在类中或者配置文件中。

package com.haitaiinc.clinicpathservice.config;

import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
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;

@Configuration
public class DruidConfiguration {
    @Bean
    public ServletRegistrationBean statViewServlet() {
        //创建servlet注册实体
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        //设置ip白名单
        servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
        //设置ip黑名单,如果allow与deny共同存在时,deny优先于allow
        servletRegistrationBean.addInitParameter("deny", "192.168.0.19");
        //设置控制台管理用户
        servletRegistrationBean.addInitParameter("loginUsername", "admin");
        servletRegistrationBean.addInitParameter("loginPassword", "123456");
        //是否可以重置数据
        servletRegistrationBean.addInitParameter("resetEnable", "false");
        return servletRegistrationBean;
    }

    @Bean
    public FilterRegistrationBean statFilter() {
        //创建过滤器
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
        //设置过滤器过滤路径
        filterRegistrationBean.addUrlPatterns("/*");
        //忽略过滤的形式
        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }
}

启动项目,如果项目启动报如下图所示的错误。

那是由于 Spring Boot 和 Druid 版本不兼容导致的,只需要在启动类中增加一行注解。

@EnableAutoConfiguration(exclude={DruidDataSourceAutoConfigure.class})

输入地址:http://127.0.0.1:8771/druid/login.html,IP地址,端口号根据项目的实际情况来

输入用户名,密码(配置文件中配置的用户名。密码)进行登录,登录后就可以看我们想看的信息。

参考文章:

https://blog.csdn.net/jay100500/article/details/81270298

https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

原文地址:https://www.cnblogs.com/jwen1994/p/12181390.html