Springboot配置数据连接池druid

本文介绍了如何在Springboot项目中集成Druid数据连接池,并配置相关参数,实现数据库连接管理和性能监控。通过添加相关依赖,配置yml文件,以及创建测试Controller,展示了Druid作为高效数据库连接池的优势,如性能监控、SQL执行日志等功能。
摘要由CSDN通过智能技术生成

1. Druid简介

Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。Druid是阿里巴巴开发的号称为监控而生的数据库连接池!

同时Druid不仅仅是一个数据库连接池,它包括四个部分:

	Druid是一个JDBC组件,它包括三个部分:
	
	   基于Filter-Chain模式的插件体系。
	
	   DruidDataSource 高效可管理的数据库连接池。
	
	   SQLParser

第一步创建项目

1.勾选架包是

	  Core:
	     Lombok
	   Web:
	     Web
	   Template Engines :
	     Freemarker
	   SQL:
	     mybatis
	     jdbc
	     mysql
	   I/O:
	     Quartz Scheduler

勾选其中SQL的架包

在这里插入图片描述

druid学习网址

链接: druid学习.

第二步

1. 导入druid相关依赖

		<dependency>
		     <groupId>com.alibaba</groupId>
		     <artifactId>druid-spring-boot-starter</artifactId>
		     <version>1.1.10</version>
		  </dependency>

2. 导入切面包,自动生成分页代码,后面用

	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-aspects</artifactId>
	</dependency>

在修改MySQL数据库的依赖,降低数据库版本

  <mysql.version>5.1.44</mysql.version>

application.yml配置druid

springboot默认数据源是org.apache.tomcat.jdbc.pool.DataSource

		server:
		  port: 80
		  servlet:
		    context-path: /
		spring:
		  datasource:
		    #1.JDBC
		    type: com.alibaba.druid.pool.DruidDataSource
		    driver-class-name: com.mysql.jdbc.Driver
		    url: jdbc:mysql://localhost:3306/mybatis_ssm?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
		    username: mybatis_ssm
		    password: xiaoli
		    druid:
		      #2.连接池配置
		      #初始化连接池的连接数量 大小,最小,最大
		      initial-size: 5
		      min-idle: 5
		      max-active: 20
		      #配置获取连接等待超时的时间
		      max-wait: 60000
		       #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
		      time-between-eviction-runs-millis: 60000
		      # 配置一个连接在池中最小生存的时间,单位是毫秒
		      min-evictable-idle-time-millis: 30000
		      validation-query: SELECT 1 FROM DUAL
		      test-while-idle: true
		      test-on-borrow: true
		      test-on-return: false
		      # 是否缓存preparedStatement,也就是PSCache  官方建议MySQL下建议关闭   个人建议如果想用SQL防火墙 建议打开
		      pool-prepared-statements: true
		      max-pool-prepared-statement-per-connection-size: 20
		      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
		      filter:
		        stat:
		          merge-sql: true
		          slow-sql-millis: 5000
		      #3.基础监控配置
		      web-stat-filter:
		        enabled: true
		        url-pattern: /*
		        #设置不统计哪些URL
		        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
		        session-stat-enable: true
		        session-stat-max-count: 100
		      stat-view-servlet:
		        enabled: true
		        url-pattern: /druid/*
		        reset-enable: true
		        #设置监控页面的登录名和密码
		        login-username: admin
		        login-password: admin
		        allow: 127.0.0.1
		        #deny: 192.168.1.100

注意:这个链接池有SQL监控和其他功能

在这里插入图片描述

在这里插入图片描述

新建一个druid的模拟测试一下

  1. 新建一个controller 包,下一个HelloController类

     package com.javaxl.springboot02.controller;
     	
     	import org.springframework.web.bind.annotation.RequestMapping;
     	import org.springframework.web.bind.annotation.RestController;
     	
     	/**
     	 * @site www.javaxl.com
     	 * @company
     	 * @create  2019-11-08 14:09
     	 */
     	@RestController
     	@RequestMapping("/demo")
     	public class HelloController {
     	
     	    @RequestMapping("/say1")
     	    public String say1(){
     	        return "说活1";
     	    }
     	
     	    @RequestMapping("/say2")
     	    public String say2(){
     	        try {
     	            Thread.sleep(2000);
     	        } catch (InterruptedException e) {
     	            e.printStackTrace();
     	        }
     	        return "说活2";
     	    }
     	
     	    @RequestMapping("/say3")
     	    public String say3(){
     	        try {
     	            Thread.sleep(5000);
     	        } catch (InterruptedException e) {
     	            e.printStackTrace();
     	        }
     	        return "说活3";
     	    }
     	
     	}
    
  2. 启动项目,访问下面路径

       http://localhost/demo/say1
       http://localhost/demo/say2
       http://localhost/demo/say3
    
  3. 查看效果
    在这里插入图片描述

总结:Druid的功能

替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。

可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。

数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。

SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。

扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。

总结:

	1.Druid可以充当数据库连接池。
	2,Druid可以可以监控数据库访问性能
	3,Druid可以获得SQL执行日志
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值