文章目录

  • 1. Maven导入依赖包
  • 2.配置yml文件



最近因为实际要求搭了一个springboot框架+druid连接池的架子,因为之前没有使用过druid连接池,把过程记录一下,如果有什么不对的地方,请各位指教。


1. Maven导入依赖包

首先当然是引入依赖包,我们用Maven自动帮我们导包。依赖如下

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

这就是我写框架有关于druid部分所引入的依赖,因为我使用的是mysql数据库所以引入的mysql的相关包。

2.配置yml文件

我们这里使用speingboot框架的yml文件进行配置,这是我配置的yml文件,其中也包含了我搭架子的mybatis配置和线程池的配置。

spring:
  datasource:
    #  配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。 
如果没有配置,将会生成一个名字,格式是:"DataSource-" + System.identityHashCode(this)
    name:test
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://127.0.0.1:3306/自己使用的数据库
    username: root
    password: 
      # 下面为连接池的补充设置,应用到上面所有数据源中
      # 初始化大小,最小,最大
      connection-error-retry-attempts: 0
      not-full-timeout-retry-count: -1
      initial-size: 5
      min-idle: 5
      max-active: 20
      # 配置获取连接等待超时的时间
      max-wait: 60000
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 300000
      # 用来检测连接是否有效的sql,要求是一个查询语句
      validation-query: SELECT 1 FROM DUAL
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      # 打开PSCache,并且指定每个连接上PSCache的大小
      pool-prepared-statements: true
      #配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      max-pool-prepared-statement-per-connection-size: 20
      filters: stat,wall
      use-global-data-source-stat: true
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

常用参数就是这些,具体参数可以到官网上查看
需要注意的是,虽然我们配置了druid连接池的其它属性,但是不会生效。因为默认是使用的java.sql.Datasource的类来获取属性的,有些属性datasource没有。如果我们想让配置生效,需要手动创建Druid的配置类

@Bean
    @ConfigurationProperties("spring.datasource")
    public DataSource druid(){
        return new DruidDataSource();
    }

    /**
     * 配置监控服务器
     * @return 返回监控注册的servlet对象
     */
    @Bean
    public ServletRegistrationBean statViewServlet() {
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        // 添加IP白名单
        servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
        // 添加IP黑名单,当白名单和黑名单重复时,黑名单优先级更高
        servletRegistrationBean.addInitParameter("deny", "");
        // 添加控制台管理用户
        servletRegistrationBean.addInitParameter("loginUsername", "root");
        servletRegistrationBean.addInitParameter("loginPassword", "123456");
        // 是否能够重置数据
        servletRegistrationBean.addInitParameter("resetEnable", "false");
        return servletRegistrationBean;
    }

    /**
     * 配置服务过滤器
     * @return 返回过滤器配置对象
     */
    @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://127.0.0.1:8080/weily/druid/index.html,登录就可以看到druid连接池的监控,账号密码是无名自己配置的,我这里配置的是root和123456

spring引入druid配置文件_spring


这里就可以看到配置已经生效了,同时我们也可以在sql监控查看我们的sql语句运行状态,方便优化。

spring引入druid配置文件_spring_02

需要注意的是使用配置yml文件一定要严格的按照yml文件的格式来写,重要的话说三遍。格式 格式 格式,每一个冒号和空格都必须按照规范,不然会出错。


这样一个springboot+druid连接池的基本配置就配置好了。