SpringBoot2.0整合druid数据库连接池

一,前言

 关于druid,相信大家都已经很熟悉了,这是阿里开源的一个数据库连接池,但是它又不仅仅是一个数据库连接池,它具有一系列的JDBC组件库,同时也是一个SQL 解析器。
 具有如下优势:
      1强大的监控特性,我们可以通过druid的后台监控,可以清楚知道连接池和sql的运行情况;
      2扩展性高,Druid提供了Filter-Chain模式的扩展API,我们可以自己编写Filter拦截JDBC中的任何方法,也可以自己编写Servlet后台监控实现定制化;
      3集合了开源和商业数据库连接池的优秀特性;
      本章,我们就来整合druid数据库连接池,并编写Servlet和Filter类来实现定制化。

二,实战

1引入pom文件(进入GitHub中管理的druid项目)

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

2配置数据源
这里需要说明,在url中加入serverTimezone=UTC,是因为mysql默认是美国时区,需要切换到中国时区,否则会报错

spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://192.168.43.201:3306/chen?serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    #type,springboot 中默认使用Tomcat作为数据源类型,这里需要进行变更
    #   druid配置
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    #   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    filters: stat,wall
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

3 配置Servlet后台管理&Filter监控
注意:在配置文件中最好使用yml格式,方便使用configurationProperites注解引入配置

@Configuration
public class DruidConfig {
    //利用注解,将我们在配置文件中的配置引入进来,
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druid(){

       return  new DruidDataSource();
    }
    //配置Druid的监控
    //1配置管理后台的Servlet,
    //2配置监控的filter
    @Bean
    public ServletRegistrationBean statViewServlet(){
      ServletRegistrationBean bean=  new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
      //设置初始化参数
        Map<String,String> initParams=new HashMap<>();
        //将初始化参数放入到该Map中
        initParams.put("loginUsername","admin");
        initParams.put("loginPassword","123456");
        initParams.put("allow","");//默认允许所以访问
        initParams.put("deny","192.168.12.12");//拒绝192.168.12.12访问
      bean.setInitParameters(initParams);
      return bean;
    }

    //配置监控的Filter
    @Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean bean=new FilterRegistrationBean();
        //设置过滤的Filter组件
        bean.setFilter(new WebStatFilter());
        //设置初始化参数
        Map<String,String> initParams=new HashMap<>();
        //设置不拦截哪些内容  静态文件请求和druid路径下的所有请求,这些请求下的sql将无法被统计
        initParams.put("exclusions","*.js,*.css,/druid/*");
        bean.setInitParameters(initParams);
        //过滤的请求,
        bean.setUrlPatterns(Arrays.asList("/*"));
        return bean;
    }
}

4启动Springboot应用
输入localhost:8080/druid,即可自动进入druid登录界面,如下:
在这里插入图片描述
输入在前面设置的用户名密码,即可进入如下界面
在这里插入图片描述
5测试SQL监控
访问一个请求执行sql命令之后,查看sql监控
在这里插入图片描述
需要注意的是,如果在配置文件中不配置filters选项,那么就无法对sql进行监控

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值