1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > druid连接池mysql5.7_Spring Boot 使用Druid连接池整合Mybatis-Plus连接Mysql数据库

druid连接池mysql5.7_Spring Boot 使用Druid连接池整合Mybatis-Plus连接Mysql数据库

时间:2024-02-27 10:35:23

相关推荐

druid连接池mysql5.7_Spring Boot 使用Druid连接池整合Mybatis-Plus连接Mysql数据库

一、连接池

在普通的数据库访问程序中,客户程序得到的连接对象是物理连接,调用连接对象的close()方法将关闭连接,而采用连接池技术,客户程序得到的连接对象是连接池中物理连接的一个句柄,调用连接对象的close()方法,物理连接并没有关闭,数据源的实现只是删除了客户程序中的连接对象和池中的连接对象之间的联系。

二、连接池框架比较

目前常用的连接池框架主要有c3p0、dbcp、proxool、druid。Spring 推荐使用dbcp;Hibernate 推荐使用c3p0和proxool

1、 DBCP:apache

DBCP(DataBase connection pool)数据库连接池。是apache上的一个 java连接池项目,也是 tomcat使用的连接池组件。单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。dbcp没有自动的去回收空闲连接的功能。

2、 C3P0:

C3P0是一个开源的jdbc连接池,它实现了数据源和jndi绑定,支持jdbc3规范和jdbc2的标准扩展。c3p0是异步操作的,缓慢的jdbc操作通过帮助进程完成。扩展这些操作可以有效的提升性能。目前使用它的开源项目有Hibernate,Spring等。c3p0有自动回收空闲连接功能。

3、 Proxool:Sourceforge

Proxool是一种Java数据库连接池技术。是sourceforge下的一个开源项目,这个项目提供一个健壮、易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。

综合来说,稳定性是dbcp>=c3p0>proxool

后来阿里巴巴的Druid开源了,Druid首先是一个数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQLParser。Druid支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQLServer、H2等等。

Druid针对Oracle和MySql做了特别优化,比如Oracle的PSCache内存占用优化,MySql的ping检测优化。Druid在监控、可扩展性、稳定性和性能方面都有明显的优势。Druid提供了Filter-Chain模式的扩展API,可以自己编写Filter拦截JDBC中的任何方法,可以在上面做任何事情,比如说性能监控、SQL审计、用户名密码加密、日志等等。

三、在Spring Boot中加入Druid连接池

3.1 添加druid依赖

compile group: 'com.alibaba', name: 'druid', version: '1.1.17'

3.2 修改application.yml配置文件

spring:

########-spring datasource-########

datasource:

#账号配置

url: jdbc:mysql://127.0.0.1:3306/retail_db?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8

username: test

password: test

driver-class-name: com.mysql.cj.jdbc.Driver

#druid连接池配置

type: com.alibaba.druid.pool.DruidDataSource

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

maxPoolPreparedStatementPerConnectionSize: 20

filters: stat,wall,log4j

connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

3.3 DruidConfiguration 配置类

import org.springframework.context.annotation.Configuration;

import org.springframework.boot.web.servlet.FilterRegistrationBean;

import org.springframework.boot.web.servlet.ServletRegistrationBean;

import org.springframework.context.annotation.Bean;

import com.alibaba.druid.support.http.StatViewServlet;

import com.alibaba.druid.support.http.WebStatFilter;

/**

* @author Alan Chen

* @description Druid连接池监控平台 http://localhost:8080/druid/index.html

* @date /6/4

*/

@Configuration

public class DruidConfiguration {

@Bean

public ServletRegistrationBean startViewServlet(){

ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");

// IP白名单

servletRegistrationBean.addInitParameter("allow","127.0.0.1");

// IP黑名单(共同存在时,deny优先于allow)

servletRegistrationBean.addInitParameter("deny","127.0.0.1");

//控制台管理用户

servletRegistrationBean.addInitParameter("loginUsername","admin");

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;

}

}

3.4 启动服务,登录Druid连接池监控平台

Druid连接池监控平台

最后给大家送波福利

阿里云折扣快速入口

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。