栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java > SpringBoot

Spring Boot集成 Druid 监控连接池

SpringBoot 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Boot集成 Druid 监控连接池

Spring Boot集成 Druid 监控连接池(5步骤)
1.项目依赖包构建
2.增加druid的spring监控配置
3.修改项目配置文件(application.properties)
4.增加druid配置类
5.在启动类上增加druid的spring监控配置文件引用的注解

具体步骤详情如下:
步骤1:
POM中的主要依赖


	com.alibaba
	druid
	1.1.9


	mysql
	mysql-connector-java

步骤2:
在项目的resource目录下(推荐)放置druid-spring.xml文件,当然直接放在src上也可以,xml内容如下,当然写成Java Bean进行对应配置也是可以的:



    
    
    
    
 
     
     	
  com.beini.*
     
 
    
    
 
    

步骤3:
修改项目配置文件(application.properties):

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/shop2?useUnicode=true&autoReconnect=true&failOverReadonly=false&zeroDateTimeBehavior=round&useSSL=false&rewriteBatchedStatements=true&socketTimeout=30000&connectTimeout=3000
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type: com.alibaba.druid.pool.DruidDataSource

#druid standard config
spring.datasource.maxActive=30
spring.datasource.initialSize=3
spring.datasource.minIdle=3
spring.datasource.maxWait=120000
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

#druid extends config
spring.datasource.filters=stat,wall,log4j
spring.datasource.poolPreparedStatements=true
spring.datasource.maxOpenPreparedStatements=20
spring.datasource.logSlowSql=true

步骤4:
新建以下连接池配置类(建议配置类所在目录为项目启动类下的直接子包下):
/Druid配置类/

import java.sql.SQLException;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Value;
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 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 DruidConfig {
	@Value("${spring.datasource.url}")
	private String dbUrl;
	@Value("${spring.datasource.username}")
	private String username;
	@Value("${spring.datasource.password}")
	private String password;
	@Value("${spring.datasource.driver-class-name}")
	private String driverClassName;
	@Value("${spring.datasource.initialSize}")
	private int initialSize;
	@Value("${spring.datasource.minIdle}")
	private int minIdle;
	@Value("${spring.datasource.maxActive}")
	private int maxActive;
	@Value("${spring.datasource.maxWait}")
	private int maxWait;
	@Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
	private int timeBetweenEvictionRunsMillis;
	@Value("${spring.datasource.minEvictableIdleTimeMillis}")
	private int minEvictableIdleTimeMillis;
	@Value("${spring.datasource.validationQuery}")
	private String validationQuery;
	@Value("${spring.datasource.testWhileIdle}")
	private boolean testWhileIdle;
	@Value("${spring.datasource.testOnBorrow}")
	private boolean testOnBorrow;
	@Value("${spring.datasource.testOnReturn}")
	private boolean testOnReturn;
	@Value("${spring.datasource.poolPreparedStatements}")
	private boolean poolPreparedStatements;
	@Value("${spring.datasource.filters}")
	private String filters;
	@Value("${spring.datasource.logSlowSql}")
	private String logSlowSql;

	@Bean
	// @Primary 注解作用是当程序选择dataSource时选择被注解的这个
	@Primary
	public DataSource dataSource() {
		DruidDataSource datasource = new DruidDataSource();
		datasource.setUrl(dbUrl);
		datasource.setUsername(username);
		datasource.setPassword(password);
		datasource.setDriverClassName(driverClassName);
		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);
		try {
			datasource.setFilters(filters);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return datasource;
	}

	@Bean
	public ServletRegistrationBean druidServlet() {
		ServletRegistrationBean reg = new ServletRegistrationBean();
		reg.setServlet(new StatViewServlet());
		reg.addUrlMappings("/druid/*");
		//注意此处正是设置druid的登录用户名和密码的地方,因为此处username和password的变量值都为root,故登录的账号和密码都为root
		reg.addInitParameter("loginUsername", username);
		reg.addInitParameter("loginPassword", password);
		reg.addInitParameter("logSlowSql", logSlowSql);
		return reg;
	}

	@Bean
	public FilterRegistrationBean filterRegistrationBean() {
		FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
		filterRegistrationBean.setFilter(new WebStatFilter());
		filterRegistrationBean.addUrlPatterns("/*");
		filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
		filterRegistrationBean.addInitParameter("profileEnable", "true");
		return filterRegistrationBean;
	}
}

步骤5:
在springboot的启动类中加上如下注解:

@importResource(locations = { "classpath:druid-spring.xml" })

最后,如果在项目启动之后,在项目的首页访问的基础上(首页URL为: http://localhost:8080/),
在URL后缀加上druid/即可看到druid的登录窗口,其登录密码和账号与连接本地的mysql相同。
如本篇文章的账号和密码都是 “root”。

祝观看此文章的慕课君们学习愉快!
后续会推出properties+Java Bean方式配置,慕课君们可以关注我查看更多文章哦!
示例代码下载处

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/235399.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号