【SpringBoot笔记】SpringBoot整合Druid数据连接池

废话少说,按SpringBoot的老套路来。

【step1】:添加依赖

<!-- 数据库连接池  -->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.25</version>
</dependency>

 

【step2】:application.yml中添加对应配置

spring:datasource:driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://对应自己的数据库连接
    username: xxxpassword: xxx
######################### Druid连接池的配置信息  #################
spring.druid.initialSize: 5                                 #初始化连接大小
spring.druid.minIdle: 5                                     #最小连接池数量
spring.druid.maxActive: 20                                  #最大连接池数量
spring.druid.maxWait: 60000                                 #获取连接时最大等待时间,单位毫秒
spring.druid.timeBetweenEvictionRunsMillis: 60000           #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.druid.minEvictableIdleTimeMillis: 300000             #配置一个连接在池中最小生存的时间,单位是毫秒
spring.druid.validationQuery: SELECT 1 FROM DUAL            #测试连接
spring.druid.testWhileIdle: true                            #申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性
spring.druid.testOnBorrow: false                            #获取连接时执行检测,建议关闭,影响性能
spring.druid.testOnReturn: false                            #归还连接时执行检测,建议关闭,影响性能
spring.druid.poolPreparedStatements: false                  #是否开启PSCache,PSCache对支持游标的数据库性能提升巨大,oracle建议开启,mysql下建议关闭
spring.druid.maxPoolPreparedStatementPerConnectionSize: 20  #开启poolPreparedStatements后生效
spring.druid.filters: stat,wall,log4j                       #配置扩展插件,常用的插件有=>stat:监控统计  log4j:日志  wall:防御sql注入
spring.druid.connectionProperties: 'druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000'  #通过connectProperties属性来打开mergeSql功能;慢SQL记录

 

【step3】:java代码中读取配置,并做相关转换(比如数据库密码加解密等,这里省略)

import java.sql.SQLException;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.embedded.FilterRegistrationBean;
import org.springframework.boot.context.embedded.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;@Configuration
public class DruidConfiguration {@Value("${spring.datasource.url}")private String url;@Value("${spring.datasource.username}")private String username;@Value("${spring.datasource.password}")private String password;@Value("${spring.datasource.driverClassName}")private String driverClassName;@Value("${spring.druid.initialSize}")private int initialSize;@Value("${spring.druid.minIdle}")private int minIdle;@Value("${spring.druid.maxActive}")private int maxActive;@Value("${spring.druid.maxWait}")private int maxWait;@Value("${spring.druid.timeBetweenEvictionRunsMillis}")private int timeBetweenEvictionRunsMillis;@Value("${spring.druid.minEvictableIdleTimeMillis}")private int minEvictableIdleTimeMillis;@Value("${spring.druid.validationQuery}")private String validationQuery;@Value("${spring.druid.testWhileIdle}")private boolean testWhileIdle;@Value("${spring.druid.testOnBorrow}")private boolean testOnBorrow;@Value("${spring.druid.testOnReturn}")private boolean testOnReturn;@Value("${spring.druid.poolPreparedStatements}")private boolean poolPreparedStatements;@Value("${spring.druid.maxPoolPreparedStatementPerConnectionSize}")private int maxPoolPreparedStatementPerConnectionSize;@Value("${spring.druid.filters}")private String filters;@Value("{spring.druid.connectionProperties}")private String connectionProperties;@Bean@Primarypublic DataSource dataSource() {DruidDataSource datasource = new DruidDataSource();datasource.setUrl(url);datasource.setUsername(username);datasource.setPassword(password);   //这里可以做加密处理
        datasource.setDriverClassName(driverClassName);//configuration
        datasource.setInitialSize(initialSize);datasource.setMinIdle(minIdle);datasource.setMaxActive(maxActive);datasource.setMaxWait(maxWait);datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);datasource.setValidationQuery(validationQuery);datasource.setTestWhileIdle(testWhileIdle);datasource.setTestOnBorrow(testOnBorrow);datasource.setTestOnReturn(testOnReturn);datasource.setPoolPreparedStatements(poolPreparedStatements);datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);try {datasource.setFilters(filters);} catch (SQLException e) {}datasource.setConnectionProperties(connectionProperties);return datasource;}@Beanpublic ServletRegistrationBean statViewServlet(){ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");servletRegistrationBean.addInitParameter("allow","127.0.0.1");  //设置ip白名单servletRegistrationBean.addInitParameter("deny","192.168.0.19");//设置ip黑名单,优先级高于白名单//设置控制台管理用户servletRegistrationBean.addInitParameter("loginUsername","root");servletRegistrationBean.addInitParameter("loginPassword","root");//是否可以重置数据servletRegistrationBean.addInitParameter("resetEnable","false");return servletRegistrationBean;}@Beanpublic FilterRegistrationBean statFilter(){//创建过滤器FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());//设置过滤器过滤路径filterRegistrationBean.addUrlPatterns("/*");//忽略过滤的形式filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");return filterRegistrationBean;}
}

 

【step4】:测试

登录成功后如下:

 

转载于:https://www.cnblogs.com/funnyboy0128/p/9052447.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

struts2中非表单标签的使用 componen

2. component标签 component标签用于使用自己的自定义组件&#xff0c;这是一个非常灵活的用法&#xff0c;如果经常需要使用某个效果片段&#xff0c;就可以考虑将这个效果片段定义成一个自定义组件&#xff0c;然后在页面中使用component标签来使用该自定义组件。因为使…

oracle 11g r2 rac中节点时间不同步,Oracle11gR2安装RAC错误之--时钟不同步

系统环境&#xff1a; 操作系统&#xff1a;RedHat EL5 Cluster&#xff1a; Oracle GI(Grid Infrastructure) Oracle&#xff1a; Oracle 11.2.0.1.0 如图所示&#xff1a;RAC 系统架系统环境&#xff1a;操作系统&#xff1a;RedHat EL5Cluster&#xff1a; Oracle GI(Grid I…

酒店预定系统

系统功能模块功能图 用例图 E-R图 转载于:https://www.cnblogs.com/qlly-20/p/9052461.html

74-A/D指标,Accumulation/Distribution,积累/派发线,离散指标.(2015.7.1)

A/D指标&#xff0c;Accumulation/Distribution积累/派发线&#xff0c;离散指标观井映天2015.7.1转载于:https://www.cnblogs.com/i201102053/p/10626638.html

linux 密码修改下次,问题:如何强制用户在下次登录Linux时更改密码

当你使用默认密码创建用户时&#xff0c;你必须强制用户在下一次登录时更改密码。当你在一个组织中工作时&#xff0c;此选项是强制性的。因为老员工可能知道默认密码&#xff0c;他们可能会也可能不会尝试不当行为,看到下图会不会有为用户担心的感觉&#xff1a;使用 passwd 命…

svn的merge使用例子

先说说什么是branch。按照Subversion的说法&#xff0c;一个branch是某个development line&#xff08;通常是主线也即trunk&#xff09;的一个拷贝&#xff0c;见下图&#xff1a; branch存在的意义在于&#xff0c;在不干扰trunk的情况下&#xff0c;和trunk并行开发&#xf…

plot画分段函数_python画图函数大全

很多时候&#xff0c;我们需要用python画图&#xff0c;这样就可以更加直观的看到数据的走势&#xff0c;而不是干巴巴的数字。今天&#xff0c;我们就给大家整理了一下python画图的常用函数&#xff0c;由于篇幅限制。无法将这些函数的使用方法全部表现出来。所以&#xff0c;…

第9章 使用ssh服务管理远程主机。

章节简述&#xff1a; 学习使用nmtui命令配置网卡参数、手工将多块网卡做绑定、使用nmcli命令查看网卡信息和使用ss命令查看网络及端口状态。 完整演示sshd服务配置方法并详细讲述每个参数的作用&#xff0c;实战基于密钥远程登陆实验以及用screen服务让远程会话不再终断。 本…

enum不能被继承

1、枚举类介绍 如果一个类的实例是有限且确定的&#xff0c;那么可以使用枚举类。比如&#xff1a;季节类&#xff0c;只有春夏秋冬四个实例。 枚举类使用enum进行创建&#xff0c;其实例必须从”第一行“开始显示写出。 enum Season{SPRING,SUMMER,FALL,WINTER;//默认public s…

linux不适合数据传输,【Linux调试经验】局域网内数据传输不经过路由

问题/发现&#xff1a;本人在为一款路由器写一个统计局域网互传流量的Linux内核模块的时候&#xff0c;发现如下问题&#xff1a;局域网内的一台设备和该局域网内另一台设备进行通信时&#xff0c;我在路由器的netfilter链表处设下钩子&#xff0c;以捕获数据。后来发现这些数据…

kali linux 升级命令_作为高级Java,你应该了解的Linux知识

原创&#xff1a;小姐姐味道(微信公众号ID&#xff1a;xjjdog)&#xff0c;欢迎分享&#xff0c;转载请保留出处。作为一个javaer&#xff0c;我以前写过很多关于Linux的文章。但经过多年的观察&#xff0c;发现其实对于大部分人&#xff0c;有些东西压根就用不着。用的最多的&…

linux centos 光盘修复,CentOS7删除/boot/initramfsxxx.img并尝试光盘救援模式修复

CentOS7删除/boot/initramfsxxx.img并尝试光盘救援模式修复一、删除/boot/initramfs-3.10.0-957.el7.x86_64.img[rootswitch ~]# rm -f /boot/initramfs-3.10.0-957.el7.x86_64.img二、重启起不来三、插入光盘&#xff0c;进入修复模式(VMWare开机按esc)四、选择修复CentOS7系统…

I/O多路转接之poll,epoll

1、poll函数原型&#xff1a;#include <poll.h>int poll(struct pollfd fds[], nfds_t nfds, int timeout)&#xff1b;参数说明:fds&#xff1a;是一个struct pollfd结构类型的数组&#xff0c;用于存放需要检测其状态的Socket描述符&#xff1b;每当调用这个函数之后&a…

pn532写入手机nfc_NFC手机手环脱机模拟加密门禁卡,你get了吗?

目标&#xff1a;将门禁卡、考勤卡、会员卡、停车卡、电梯卡等等各种卡模拟进手机里&#xff0c;模拟后可用手机代替刷卡&#xff0c;无需root&#xff0c;不用电脑背景介绍&#xff1a;前言目前&#xff0c;IC卡已被广泛应用于身份识别、金融消费、安全认证等领域。大多数人每…

linux安装vim plug, vim-plug 的安装和使用

正确安装 vim-plug之前写了一篇&#x1f984; 一篇文章讲清楚如何安装vim插件&#xff0c;见各位童鞋留言说 vim-plug 更好用。果然各种插件方便管理&#xff0c;安装也很简单。下面简单说下 vim-plug 的操作基本姿势&#xff1a;安装 vim-plugvim-plug 是一个 vim 的插件管理插…

dw网页制作入学教程_简单的手机网页制作教程

很多小白会以为建站只能通过电脑&#xff0c;但实际上&#xff0c;用手机也能顺利建站&#xff0c;而且操作非常简单&#xff0c;不需要你懂技术知识哦&#xff01;下面就跟大家说说手机网页制作教程&#xff1a;首先&#xff0c;你需要选择一个比较好用的手机网页制作app。尽量…

linux 双显卡 黑屏 amd,Win10系统AMD双显卡笔记本开机出现黑屏怎么办?解决方法...

win10是一个全新的操作系统&#xff0c;所以我们在使用时很有可能会碰到一些没见过的新问题。比如&#xff0c;有用户在升级到Windows10后&#xff0c;发现AMD双显卡笔记本出现了开机黑屏的情况。具体表现为&#xff1a;Windows Logo加载之后&#xff0c;用户登陆之前会出现30s…

[BZOJ 1834] [ZJOI2010]network 网络扩容

1834: [ZJOI2010]network 网络扩容 Time Limit: 3 SecMemory Limit: 64 MBDescription 给定一张有向图&#xff0c;每条边都有一个容量C和一个扩容费用W。这里扩容费用是指将容量扩大1所需的费用。求&#xff1a; 1、 在不扩容的情况下&#xff0c;1到N的最大流&#xff1b; 2、…

fw150us的linux驱动下载,迅捷FW150US1.0/2.0无线网卡驱动

迅捷FW150US1.0/2.0无线网卡驱动官方版是迅捷推出的一款超小型150M无线USB网卡&#xff0c;安装迅捷FW150US1.0/2.0无线网卡驱动官方版&#xff0c;即可正常连接电脑使用。迅捷FW150US1.0/2.0无线网卡驱动支持自动检测功能&#xff0c;能够自动调整速率&#xff0c;无线传输速率…