springboot之Druid数据源

Druid是阿里巴巴的一个开源项目,一个关系型数据库连接池。Druid在监控、可扩展性、稳定性和性能方面具有明显的优势。通过Druid提供的监控功能,可以实时观察数据库连接池和SQL查询的工作情况。使用Druid连接池在一定程度上可以提高数据访问效率(关于Druid、dbcp还有c3p0的比较可以查看http://www.cnblogs.com/JavaSubin/p/5294721.html,个人感觉很详细)。

springboot整合Druid访问MySQL数据库,首先要导入maven依赖。

<!-- 可通过这个地址查找:https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.1.9</version>
</dependency>

然后在application.yml(和application.properties是一样的,但是看起来更舒服,更条理化)中添加配置

spring:
  #配置jdbc
  datasource:
    url: jdbc:mysql://localhost:3306/xiaodou?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=true
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

    #druid连接池
    type: com.alibaba.druid.pool.DruidDataSource
    #最大活跃数
    maxActive: 20
    #初始化数量
    initialSize: 1
    #最大连接等待超时时间
    maxWait: 60000
    #打开PSCache,并且指定每个连接PSCache的大小
    poolPreparedStatements: true
    maxPoolPreparedStatementPerConnectionSize: 20
    #通过connectionProperties属性来打开mergeSql功能;慢SQL记录
    #connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
    minIdle: 1
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 30000
    validationQuery: select 1 from dual
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false

运行项目,查看日志可以看到Druid作为连接池已经启用了,如下图所示:


接下来可以开启Druid的监控功能,新建DruidConfig.java,代码如下:

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 DruidConfig {

    @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.250");
        //设置控制台管理用户
        servletRegistrationBean.addInitParameter("loginUsername","druid");
        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;
    }
}

重新启动项目,浏览器打开http://localhost:8080/druid/login.html地址进入Druid的监控页面


输入自己设置的用户名密码后,进入如下页面:


在这个页面中有数据源、SQL监控、SQL防火墙、Web应用、URI监控、Session监控、spring监控、JSONAPI八大模块。

扫描二维码关注公众号,回复: 1840731 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_23543983/article/details/80408365