Spring-boot 使用druid连接池

第一步: 引入依赖包

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.6</version>
</dependency>

第二步: 编写配置文件 druid.properties

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///test?useEncode=true;characterEncoding=utf-8;
username=root
password=root
#监控统计用的filter=stat 日志用的filter=log4j 防御sql注入的filter=wall
filters=stat
#初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
initialSize=1
#获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降
#如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
maxWait=60000
#最小连接池数量
minIdle=1
#最大连接池数量
maxActive=5
#1) Destroy线程会检测连接的间隔时间 2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
#用来检测连接是否有效的sql,要求是一个查询语句。
#如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。
validationQuery=SELECT'x'
#建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测
#如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
testWhileIdle=true
#申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
testOnBorrow=true
#归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
testOnReturn=true
#对于长时间不使用的连接强制关闭
removeAbandoned=true
 #超过30分钟开始关闭空闲连接
removeAbandonedTimeout=1800
 #将当前关闭动作记录到日志
logAbandoned=true

第三步: 启动类中注入 DataSource

/** 注入数据连接池 */
@Bean
public DataSource registerDataSource(){
    DataSource ds = null;
    Properties prop = new Properties();
    try (InputStream in = Thread.currentThread().getClass().getResourceAsStream("druid.properties")){
        prop.load(in);
        //此处在加载前可以做一些处理, example: 服务器的链接与本地不一致
        ds = DruidDataSourceFactory.createDataSource(prop);
        return ds;
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

附: 使用druid自带监控功能

附1: 开启自定义filterservlet

//启动类中新增注解
@ServletComponentScan   //开启后支持自定义Servlet和Filter
public class AppStart extends WebMvcConfigurerAdapter {
    ...
}

附2: 新增DruidStatFilter

import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;

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

@WebFilter(  
    filterName="druidWebStatFilter",urlPatterns="/*",  
    initParams={  
        /** 忽略资源 */  
        @WebInitParam(name="exclusions", value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*,/static/*"),  
        @WebInitParam(name="profileEnable",value="true"),  
        @WebInitParam(name="principalCookieName",value="USER_COOKIE"),  
        @WebInitParam(name="principalSessionName",value="USER_SESSION")  
    }
)  
public class DruidStatFilter extends WebStatFilter { 

}

附3: 新增DruidStatViewServlet

import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;

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

@WebServlet(urlPatterns="/druid/*",  
        initParams={  
                /** 白名单,如果不配置或value为空,则允许所有 */  
                @WebInitParam(name="allow",value=""),  
                /** 黑名单,与白名单存在相同IP时,优先于白名单 */  
                @WebInitParam(name="deny",value=""),  
                /** 用户名 */  
                @WebInitParam(name="loginUsername",value="root"),  
                /** 密码 */  
                @WebInitParam(name="loginPassword",value="1234"),  
                /** 禁用HTML页面上的“Reset All”功能   */  
                @WebInitParam(name="resetEnable",value="false")  
        })  
public class DruidStatViewServlet extends StatViewServlet {

    private static final long serialVersionUID = 1L;  

}

OK了, 然后访问 http://<host>:<port>/<context-path>/druid 就可以看到监控页面

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值