SpringBoot使用Druid连接池

连接数据库

springboot默认数据库hikari,数据库的配置如下:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: wanide
    password: "000000"

 

druid

Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。

使用druid需要先导入依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.21</version>
</dependency>

application.yaml配置数据库:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: wanide
    password: "000000"
    type: com.alibaba.druid.pool.DruidDataSource

    #Spring Boot 默认是不注入这些属性值的,需要自己绑定
    #druid 数据源专有配置
    initialSize: 5   #初始化时建立物理连接的个数
    minIdle: 5    #最小连接池数量
    maxActive: 20   #最大连接池数量
    maxWait: 60000    #获取连接时最大等待时间
    timeBetweenEvictionRunsMillis: 60000    #Destory线程检测连接的间隔时间
    minEvictableIdleTimeMillis: 300000    #连接保持空闲而不被驱逐的最长时间
    validationQuery: SELECT 1 FROM DUAL    #检测连接是否有效的sql
    testWhileIdle: true
    testOnBorrow: false   #申请连接时执行validationQuery检测连接是否有效
    testOnReturn: false    #归还连接时执行validationQuery检测连接是否有效
    poolPreparedStatements: true   #是否缓存preparedStatements

    #配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入
    #如果允许时报错  java.lang.ClassNotFoundException: org.apache.log4j.Priority
    #则导入 log4j 依赖即可
    filters: stat,wall,log4j
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

Druid 数据源具有监控的功能,并提供了一个 web 界面方便用户查看。

package com.lyr.config;

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 DruidConfig {
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druidDataSource(){
        return new DruidDataSource();
    }

    //后台监控:因为springboot内置了servlet容器,使用没有web.xml,可以用ServletRegistrationBean替代
    @Bean
    public ServletRegistrationBean statViewServlet(){
        ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(),"/druid/*");

        //后台需要有人登陆,账号密码
        HashMap<String,String> initParameters = new HashMap<>();

        //增加配置
        initParameters.put("loginUsername","admin");  //登陆参数是固定的
        initParameters.put("loginPassword","123456");

        //允许谁可以访问
        initParameters.put("allow","");


        bean.setInitParameters(initParameters);  //设置初始化参数
        return bean;
    }

}

配置完后访问http://localhost:8080/druid/login.html就可以进入后台

用户名和密码就是刚刚我们配置的,就可以查看我们对数据库的操作什么的。

配置过滤器

//filter
    @Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new WebStatFilter());
        //过滤那些请求
        Map<String,String> initParameters = new HashMap<>();
        //不过滤的
        initParameters.put("exclusions","*.js,*.css,/druid/*");
        bean.setInitParameters(initParameters);
        return bean;
    }
发布了322 篇原创文章 · 获赞 61 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/wan_ide/article/details/105137376