SpringBoot下的Druid连接池的配置和使用

Druid是一个JDBC组件,druid 是阿里开源在 github 上面的数据库连接池,它包括三部分: 
* DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。 
* DruidDataSource 高效可管理的数据库连接池。 
* SQLParser 专门解析 sql 语句

Druid 有什么优点?(来源网络) 
1. 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。 
2. 替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。 
3. 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。 
4. SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。 
5. 扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter-Chain机制,很方便编写JDBC层的扩展插件。 


下面来看它的配置:

  1. 引入相关的依赖:
    <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
    	<dependency>
    	    <groupId>com.alibaba</groupId>
    		<artifactId>druid</artifactId>
    		<version>1.1.10</version>
    	</dependency>
    

     

  2. 配置application.properties或者application.yml文件,我这里用properties文件为例:
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/student?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=gbk&zeroDateTimeBehavior=convertToNull&useSSL=false
    spring.datasource.username=root
    spring.datasource.password=123456
    
    
    # 连接池的配置信息
    # 初始化大小,最小,最大
    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 FROM DUAL
    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
    # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
    spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
    
    

     

  3. 编写配置类配置DataSource以及Druid的Servlet和Filter
    package com.yhw.config;
    
    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.Map;
    
    import javax.servlet.Servlet;
    import javax.sql.DataSource;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    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;
    
    
    @Configuration
    public class DataSourceConfig {
    	
    	//配置Druid连接池
    	@Bean
    	@ConfigurationProperties(prefix="spring.datasource")
    	public DataSource dataSource() {
    		
    		return new DruidDataSource();
    	}
    	
    	//配置Druid连接池的Servlet
    	@Bean
    	public ServletRegistrationBean<Servlet> statViewServlet(){
    		ServletRegistrationBean<Servlet> bean = 
    				new ServletRegistrationBean<Servlet>(new StatViewServlet(),"/druid/*");
    		Map<String, String> map = new HashMap<String, String>();
    		map.put("loginUsername", "杨红伟");
    		map.put("loginPassword", "123456");
    		map.put("allow", "");
    		//map.put("deny", "192.168.12.12");
    		bean.setInitParameters(map );
    		
    		return bean;
    	}
    	
    	//配置filter
    	@Bean
    	public FilterRegistrationBean<WebStatFilter> webStatFilter(){
    		FilterRegistrationBean<WebStatFilter> bean = 
    				new FilterRegistrationBean<WebStatFilter>(new WebStatFilter());
    		 bean.setUrlPatterns(Arrays.asList("/*"));
    	        Map<String, String> map = new HashMap<String, String>();
    	        map.put("exclusions","*.js,*.css,/druid/*");
    	        bean.setInitParameters(map);
    	        return bean;
    	}
    	
    }
    

    至此,SpringBoot下的Druid连接池就配置完毕啦。可以通过 http://localhost:8081/druid/index.html 输入设置好的用户名和密码来进入Druid的监控首页。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值