java druid demo_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.javapackage 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.javadruid除了数据连接池,还集成了对站点的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的启动类上打上自动扫描注解@@ServletComponentScanpackage 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")//@EnableAspectJAutoProxypublic class SpringmvcdemoApplication {    public static void main(String[] args) {

SpringApplication.run(SpringmvcdemoApplication.class, args);

}

}

# 截一波运行图

AAffA0nNPuCLAAAAAElFTkSuQmCC

作者:FutaoSmile丶

链接:https://www.jianshu.com/p/0631755f9983

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值