springboot整合druid连接池
- 依赖
//mysql 驱动 compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.21' //druid compile group: 'com.alibaba', name: 'druid', version: '1.1.10'
1. 新建druid配置信息类DruidConfiguration.java
package com.futao.springmvcdemo.foundation.configuration; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import javax.sql.DataSource; import java.sql.SQLException; /** * @author futao * Created on 2018/10/11. * ConfigurationProperties(prefix = "spring.datasource")使用规则,注入的字段如果为private,则必须具有setter方法 */ @Component @ConfigurationProperties(prefix = "spring.datasource") public class DruidConfiguration { /** * 数据库地址 */ private String url; /** * 用户名 */ private String userName; /** * 密码 */ private String password; /** * 初始化连接数量 */ private int initialSize; /** * 最小闲置连接 */ private int minIdle; /** * 最大存活连接 */ private int maxActive; /** * 配置获取连接等待超时的时间 */ private long maxWait; /** * 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 */ private long timeBetweenEvictionRunsMillis; /** * 配置一个连接在池中最小生存的时间,单位是毫秒 */ private long minEvictableIdleTimeMillis; /** * 配置一个连接在池中最大生存的时间,单位是毫秒 */ private long maxEvictableIdleTimeMillis; /** * */ private boolean testWhileIdle; /** * */ private boolean testOnBorrow; /** * */ private boolean testOnReturn; /** * */ private boolean poolPreparedStatements; /** * */ private int maxOpenPreparedStatements; /** * */ private boolean asyncInit; @Bean public DataSource druidDataSource() throws SQLException { DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setUrl(url); druidDataSource.setUsername(userName); druidDataSource.setPassword(password); druidDataSource.setMaxActive(maxActive); druidDataSource.setInitialSize(initialSize); druidDataSource.setMaxWait(maxWait); druidDataSource.setMinIdle(minIdle); druidDataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); druidDataSource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); druidDataSource.setMaxEvictableIdleTimeMillis(maxEvictableIdleTimeMillis); druidDataSource.setTestWhileIdle(testWhileIdle); druidDataSource.setTestOnBorrow(testOnBorrow); druidDataSource.setTestOnReturn(testOnReturn); druidDataSource.setPoolPreparedStatements(poolPreparedStatements); druidDataSource.setMaxOpenPreparedStatements(maxOpenPreparedStatements); druidDataSource.setAsyncInit(asyncInit); return druidDataSource; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getInitialSize() { return initialSize; } public void setInitialSize(int initialSize) { this.initialSize = initialSize; } public int getMinIdle() { return minIdle; } public void setMinIdle(int minIdle) { this.minIdle = minIdle; } public int getMaxActive() { return maxActive; } public void setMaxActive(int maxActive) { this.maxActive = maxActive; } public long getMaxWait() { return maxWait; } public void setMaxWait(long maxWait) { this.maxWait = maxWait; } public long getTimeBetweenEvictionRunsMillis() { return timeBetweenEvictionRunsMillis; } public void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) { this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis; } public long getMinEvictableIdleTimeMillis() { return minEvictableIdleTimeMillis; } public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) { this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis; } public long getMaxEvictableIdleTimeMillis() { return maxEvictableIdleTimeMillis; } public void setMaxEvictableIdleTimeMillis(long maxEvictableIdleTimeMillis) { this.maxEvictableIdleTimeMillis = maxEvictableIdleTimeMillis; } public boolean isTestWhileIdle() { return testWhileIdle; } public void setTestWhileIdle(boolean testWhileIdle) { this.testWhileIdle = testWhileIdle; } public boolean isTestOnBorrow() { return testOnBorrow; } public void setTestOnBorrow(boolean testOnBorrow) { this.testOnBorrow = testOnBorrow; } public boolean isTestOnReturn() { return testOnReturn; } public void setTestOnReturn(boolean testOnReturn) { this.testOnReturn = testOnReturn; } public boolean isPoolPreparedStatements() { return poolPreparedStatements; } public void setPoolPreparedStatements(boolean poolPreparedStatements) { this.poolPreparedStatements = poolPreparedStatements; } public int getMaxOpenPreparedStatements() { return maxOpenPreparedStatements; } public void setMaxOpenPreparedStatements(int maxOpenPreparedStatements) { this.maxOpenPreparedStatements = maxOpenPreparedStatements; } public boolean isAsyncInit() { return asyncInit; } public void setAsyncInit(boolean asyncInit) { this.asyncInit = asyncInit; } }
2. 在application.yml中配置配置信息
spring: # 数据源 datasource: url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8 username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource platform: mysql initialSize: 5 minIdle: 10 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 2000 minEvictableIdleTimeMillis: 600000 maxEvictableIdleTimeMillis: 900000 testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true maxOpenPreparedStatements: 20 asyncInit: true filters: stat,wall,log4j logSlowSql: true
3. 添加过滤器DruidFilter.java
druid除了数据连接池,还集成了对站点的URL进行统计的功能,利用filter忽略druid对某些资源的统计
package com.futao.springmvcdemo.controller; import com.alibaba.druid.support.http.WebStatFilter; import javax.servlet.annotation.WebFilter; import javax.servlet.annotation.WebInitParam; /** * @author futao * Created on 2018/10/11. */ @WebFilter(filterName = "DruidFilter", urlPatterns = "/*", initParams = { @WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略资源 }) public class DruidFilter extends WebStatFilter { }
4. 定义DruidServlet.java
显示druid管理页面
package com.futao.springmvcdemo.controller; import com.alibaba.druid.support.http.StatViewServlet; import javax.servlet.annotation.WebInitParam; import javax.servlet.annotation.WebServlet; /** * @author futao * Created on 2018/10/11. */ @WebServlet(urlPatterns = "/druid/*", initParams = { @WebInitParam(name = "allow", value = "127.0.0.1"),// IP白名单 (没有配置或者为空,则允许所有访问) @WebInitParam(name = "deny", value = "192.168.16.111"),// IP黑名单 (存在共同时,deny优先于allow) @WebInitParam(name = "loginUsername", value = "admin"),// 用户名 @WebInitParam(name = "loginPassword", value = "admin"),// 密码 @WebInitParam(name = "resetEnable", value = "false")// 禁用HTML页面上的“Reset All”功能 }) public class DruidServlet extends StatViewServlet { private static final long serialVersionUID = -6085007333934055609L; }
5. 对于基于注解的Filter和Servlet需要在SpringBoot的启动类上打上自动扫描注解@@ServletComponentScan
package com.futao.springmvcdemo; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; /** * @author futao * ServletComponentScan 开启servlet和filter */ @SpringBootApplication @ServletComponentScan @MapperScan("com.futao.springmvcdemo.dao") //@EnableAspectJAutoProxy public class SpringmvcdemoApplication { public static void main(String[] args) { SpringApplication.run(SpringmvcdemoApplication.class, args); } }
截一波运行图

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
@ConfigurationProperties注解的使用与@Value的使用
读取的配置文件application.yml: jianshu: id: futaosmile 1. 使用@ConfigurationProperties注解注入 @RunWith(SpringRunner.class) @SpringBootTest @ConfigurationProperties(prefix = "jianshu") public class SpringmvcdemoApplicationTests { private String id; @Test public void test10() { System.out.println(id); } } 输出null,注入失败 原因:使用@ConfigurationProperties注解的方式注入为每个注入的字段添加setter方法 package com.futao.springmvcdemo; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation...
- 下一篇
Java静态方法和实例方法 java中的数组作为形参传入
Java静态方法和实例方法 java中的数组作为形参传入 Java虚拟机 启动一个Java程序的时候,会诞生一个虚拟机实例,当程序关闭退出时,该实例会消失。如果一个机器上运行着三个Java程序,即有三个Java虚拟机实例Java虚拟机会调用某个初始类的main()方法运行一个Java程序,此方法将会作为程序的初始线程启动,任何线程都是由主线程启动的。 守护线程和非守护线程 Java虚拟机有两种线程,守护线程和非守护线程。例如垃圾收集任务的线程,属于守护线程。 Java可以将创建的任何线程定义为守护线程 main为非守护线程,当虚拟机中的所有非守护线程终止的时候,虚拟机实例将会自动退出。 类加载器 用于加载class文件中的类 运行数据区 分为本地方法区,堆,栈,寄存器,本地方法栈 方法区 被称为静态区,和堆一样,会被所有线程共享。方法区会包含静态的class和static变量 在java虚拟机启动的时候会被装载 堆 储存对象,即new出的实例,会在堆中储存。会被所有线程共享,不存放基本类型和对象引用。 对象中会有一个指向方法区的指针,用来把堆中new出的对象和方法区的类和静态变量连接起...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装Nodejs环境
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8编译安装MySQL8.0.19
- CentOS关闭SELinux安全模块
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Red5直播服务器,属于Java语言的直播服务器