SpringBoot学习(五)—— springboot快速整合Druid

Druid链接池

简介

由阿里巴巴开源的druid链接池是目前综合实力最突出的数据库链接池,并且还提供了监控日志功能,可以分析SQL执行状况。css

引入druid链接池

pom.xml中加入java

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

application.properties中加入mysql

# druid
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

# 链接池初始化大小,最小,最大
spring.datasource.initialSize=10
spring.datasource.minIdle=10
spring.datasource.maxActive=30
# 链接等待超时时间
spring.datasource.maxWait=60000
# 多久检测须要关闭的空闲链接
spring.datasource.timeBetweenEvictionRunsMillis=60000
# 一个链接在池中最小生存的时间
spring.datasource.minEvictableIdleTimeMillis=300000
# 校验SQL,Oracle配置 spring.datasource.validationQuery=SELECT 1 FROM DUAL,若是不配validationQuery项,则下面三项配置无用
spring.datasource.validationQuery=SELECT 'x'
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
# 打开PSCache,而且指定每一个链接上PSCache的大小
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
# 配置监控统计拦截的filters,去掉后监控界面sql没法统计,wall用于防火墙
spring.datasource.filters=stat,wall,log4j
# 经过connectProperties属性来打开mergeSql功能;慢SQL记录
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合并多个DruidDataSource的监控数据
spring.datasource.useGlobalDataSourceStat=true

注:以前已经配置好了mysql,mybatis,这里没有重复写了git

代码实战

新增了一个DruidFilter.java来配置内置的监控github

在这里插入图片描述
DruidFilter.javaweb

package com.example.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 DruidFilter {

    @Bean
    public ServletRegistrationBean druidStatView() {
        //指定路径进入内置监控页面
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");

        //IP白名单:
        servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
        //IP黑名单
        servletRegistrationBean.addInitParameter("deny", "192.168.1.73");
        //登陆查看信息的帐号密码.
        //servletRegistrationBean.addInitParameter("loginUsername", "admin");
        //servletRegistrationBean.addInitParameter("loginPassword", "123456");
        //是否可以重置数据.
        servletRegistrationBean.addInitParameter("resetEnable", "true");
        return servletRegistrationBean;
    }

    @Bean
    public FilterRegistrationBean druidWebStatFilter() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
        //添加过滤规则.
        filterRegistrationBean.addUrlPatterns("/*");
        //添加不须要忽略的格式信息.
        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }

}

注:我以前就已经配置好了spring security,若是在和其余教程同样配置druid的帐号密码,会致使输入druid的帐号密码后没法跳转进入内置监控页面,我知道有不少方法能够避免,但那都须要额外增长代码来判断绕过,既然spring security已经有了帐号权限,何须额外非得给druid单独增长一套帐号权限,把 /druid/* 路径配置在spring security中,公用已有的帐号权限不更好嘛。因此我没有单独配置。spring

还有这只是经常使用的配置,如若须要进一步了解详细的配置sql

内置监控页面配置详情Web关联配置详情数据库

效果图以下mybatis

在这里插入图片描述恩恩,还自带阿里云的广告,果真是阿里的开源产品

相关文章
相关标签/搜索