Spring Boot使用Druid连接池基本配置
以下为Spring Boot配置Druid
一、pom.xml配置
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
//此版本有bug,部署多个项目到tomcat,会无法启动,报错名字冲突
<!--<version>1.0.18</version>-->
<version>1.0.25</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
二、数据库加密
java –cp druid-1.0.18.jar com.alibaba.druid.filter.config.ConfigTools 你的密码

三、application.properties配置
#数据源
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url= jdbc:mysql://10.105.10.33:3306/blacklist?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.username=bigdata
spring.datasource.password=${password}
#数据库密码加密
#java –cp druid-1.0.18.jar com.alibaba.druid.filter.config.ConfigTools 你的密码
privateKey:MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAnSwp/IIJrOgv06BfLXxFhMUHoM+yK44fQnqV9A8P//WiG2SLD0lbGMkONtdwG6YDeAy/y3vlIZFgB7aDhSG+RwIDAQABAkB1jI1OXBdOaU0z0tK8WyBHP3EIFa5kouPAPZyfLxDBVlABdlnJyDXW6hhiWrkQS7LoH0YAOZ94RTigtBNa5g35AiEA32IvnrWvelOdGiFuDGyh9hcOVS+hFMcOfGRmjmnpzysCIQC0HxZ6SrSVqhS1xFi8k8DqibSPE+D1JOe3uBMq/F1fVQIhAKSpZrrR6ID+Y37gh5Nm/Fg/lJQcoNuFA9uT0rlFv1CzAiEAtAOl2U60MCetTwQOk1kvordBZwU8/IOHucsUDQ/u2YkCIGnkvkhFXbrhNxU0goqxJWVibcbleQf8c/xE8fpnBhpx
publicKey:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJ0sKfyCCazoL9OgXy18RYTFB6DPsiuOH0J6lfQPD//1ohtkiw9JWxjJDjbXcBumA3gMv8t75SGRYAe2g4UhvkcCAwEAAQ==
password:XLusBJvkC6kQkNWOv9dhR9ZuRijdyUqNxhux65GIpu8A4Br/Fv60g0UwxyLCXXeWo0bT4xVQMdNERUXFApBbDg==
# 下面为连接池的补充设置,应用到上面所有数据源中
# 初始化大小,最小,最大
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
# 配置获取连接等待超时的时间
spring.datasource.maxWait=60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.timeBetweenEvictionRunsMillis=60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1
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,config
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000;config.decrypt=true;config.decrypt.key=${publicKey}
config配置类
由于spring boot 1.40目前还不直接支持druid,所以需要手动配置DataSource
package com.xxxx.config;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Value;
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;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
/**
* Druid监控web配置
*
* @author jinxiaoxin
*
*/
@Configuration
public class DruidConfig {
@Bean
public ServletRegistrationBean druidServlet() {
ServletRegistrationBean reg = new ServletRegistrationBean();
reg.setServlet(new StatViewServlet());
// 登录URL http://localhost:8080/d/login.html
reg.addUrlMappings("/druid/*");
// 设置白名单
reg.addInitParameter("allow", "10.105.0.220");
// 设置黑名单
reg.addInitParameter("deny", "");
// 设置登录查看信息的账号密码.
reg.addInitParameter("loginUsername", "admin");
reg.addInitParameter("loginPassword", "admin");
return reg;
}
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new WebStatFilter());
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.addInitParameter("exclusions",
"*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
@Bean
public DataSource druidDataSource(
@Value("${spring.datasource.driverClassName}") String driver,
@Value("${spring.datasource.url}") String url,
@Value("${spring.datasource.username}") String username,
@Value("${spring.datasource.password}") String password,
@Value("${publicKey}") String publicKey,
@Value("${spring.datasource.initialSize}") int initialSize,
@Value("${spring.datasource.minIdle}") int minIdle,
@Value("${spring.datasource.maxActive}") int maxActive,
@Value("${spring.datasource.maxWait}") long maxWait,
@Value("${spring.datasource.timeBetweenEvictionRunsMillis}") long timeBetweenEvictionRunsMillis,
@Value("${spring.datasource.minEvictableIdleTimeMillis}") long minEvictableIdleTimeMillis,
@Value("${spring.datasource.validationQuery}") String validationQuery,
@Value("${spring.datasource.testWhileIdle}") boolean testWhileIdle,
@Value("${spring.datasource.testOnBorrow}") boolean testOnBorrow,
@Value("${spring.datasource.testOnReturn}") boolean testOnReturn,
@Value("${spring.datasource.poolPreparedStatements}") boolean poolPreparedStatements,
@Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}") int maxPoolPreparedStatementPerConnectionSize,
@Value("${spring.datasource.filters}") String filters,
@Value("${spring.datasource.connectionProperties}") String connectionProperties) {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName(driver);
druidDataSource.setUrl(url);
druidDataSource.setUsername(username);
druidDataSource.setPassword(password);
druidDataSource.setInitialSize(initialSize);
druidDataSource.setMaxActive(maxActive);
druidDataSource.setMaxWait(maxWait);
druidDataSource
.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
druidDataSource
.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
druidDataSource.setValidationQuery(validationQuery);
druidDataSource.setTestWhileIdle(testWhileIdle);
druidDataSource.setTestOnBorrow(testOnBorrow);
druidDataSource.setTestOnReturn(testOnReturn);
druidDataSource.setPoolPreparedStatements(poolPreparedStatements);
druidDataSource
.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
druidDataSource.setConnectionProperties(connectionProperties);
try {
druidDataSource.setFilters(filters);
} catch (SQLException e) {
e.printStackTrace();
}
return druidDataSource;
}
}
四、application配置
加上@ComponentScan注解
package com.xxxx;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.transaction.annotation.EnableTransactionManagement;
//默认属性使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan
@SpringBootApplication
// 启注解事务管理
@EnableTransactionManagement
@EnableConfigurationProperties
public class App extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
@Override
protected SpringApplicationBuilder configure(
SpringApplicationBuilder application) {
return application.sources(App.class);
}
}
五、Druid web ui地址
http://localhost:8080/druid/login.html
用户名admin
密码admin
Spring Boot使用Druid连接池基本配置的更多相关文章
- Spring Boot下Druid连接池+mybatis
目前Spring Boot中默认支持的连接池有dbcp,dbcp2, hikari三种连接池. 引言: 在Spring Boot下默认提供了若干种可用的连接池,Druid来自于阿里系的一个开源连 ...
- Spring Boot 添加Druid连接池(1.5 版本)
Druid是一个关系型数据库连接池,是阿里巴巴的一个开源项目,地址:https://github.com/alibaba/druid .Druid不但提供连接池的功能,还提供监控功能,可以实时查看数据 ...
- Spring Boot下Druid连接池的使用配置分析
https://blog.csdn.net/blueheart20/article/details/52384032
- Spring Boot [使用 Druid 数据库连接池]
导读 最近一段时间比较忙,以至于很久没有更新Spring Boot系列文章,恰好最近用到Druid, 就将Spring Boot 使用 Druid作为数据源做一个简单的介绍. Druid介绍: Dru ...
- 六:SpringBoot-集成Druid连接池,配置监控界面
SpringBoot-集成Druid连接池,配置监控界面 1.Druid连接池 1.1 Druid特点 2.SpringBoot整合Druid 2.1 引入核心依赖 2.2 数据源配置文件 2.3 核 ...
- Spring Boot数据访问之Druid连接池的配置
在Spring Boot数据访问之数据源自动配置 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中数据源连接池方式缺省(type)情况下默认使用HikariCP,那不缺省如何配置呢?我们 ...
- Spring Boot之默认连接池配置策略
注意:如果我们使用spring-boot-starter-jdbc 或 spring-boot-starter-data-jpa “starters”坐标,Spring Boot将自动配置Hikari ...
- spring+mybatis+c3p0数据库连接池或druid连接池使用配置整理
在系统性能优化的时候,或者说在进行代码开发的时候,多数人应该都知道一个很基本的原则,那就是保证功能正常良好的情况下,要尽量减少对数据库的操作. 据我所知,原因大概有这样两个: 一个是,一般情况下系统服 ...
- spring 5.x 系列第6篇 —— 整合 mybatis + druid 连接池 (代码配置方式)
源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 项目目录结构 1.创建maven工程,除了Spring基本依赖外,还需要导 ...
随机推荐
- mysql存储过程的学习(mysql提高执行效率之进阶过程)
1:存储过程: 答:存储过程是sql语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理:存储过程存储在数据库内,可以由应用程序调用执行,而且允许用户声明变量以及进行流程控制,存储类型可以接受 ...
- OpenJDK-study-001 windows上安装Mercurial 4.4.1 克隆OPENJDK版本库
下载安装 1.下载Mercurial 进入https://www.mercurial-scm.org/wiki/Mercurial下载,windows上傻瓜式安装的,安装好之后,命令行进入安装目录, ...
- javascript获取时间戳
时间戳: 时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数.它也被称为 Unix 时间戳(Unix Timestamp). JavaScript 获取当前时间戳: < ...
- cookie 详解
cookie概览 cookie是Web浏览器存储的少量命名数据,它与某个特定的网页或网站关联在一起.cookie是用来给Web浏览器提供内存,以便脚本和服务端程序可以在一个页面使用另一个页面的输入数据 ...
- sparkStreaming运行yarn,提交任务报错
op.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:302) ...
- Ubuntu16.04中nginx除80之外其他端口不能访问
不废话, 大多数都以为是ufw防火墙的问题. 但我的是因iptables防火墙, 坑死我了. 查了好多也没查到怎么在Ubuntu关闭iptables, 索性直接卸载 apt-get remove ip ...
- thinkphp5 model 模型
新增更新都是save.saveAll 怎么识别他们 实例化模型后调用save方法表示新增: 查询数据后调用save方法表示更新: save方法传入更新条件后表示更新: isUpdate(true): ...
- HDU-1013的解题报告
题目来源:hdu-1013 题意:正整数的数字根是通过求整数的整数而求出的.如果结果值是一个位数,那么这个数字就是数字根.如果结果值包含两个或多个数字,则将这些数字相加并重复该过程.只要需要获得一个数 ...
- HDU 1281 棋盘游戏 (枚举+最大匹配)
<题目链接> Problem Description 小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的“车”,并且使得他们不能互相攻击,这当然很简单 ...
- hdu3944
hdu3944题目中给出的杨辉三角形的形状带有误导目的,应该转化成对称的形状再去思考这个问题分两种情况第一个是在左区从目标位置向左上方走一直走到边界,然后再向右上方一直走到起点n-k个1加上C(n-k ...