公司动态

springBoot整合Druid数据源

📅 2026/7/28 19:28:13
springBoot整合Druid数据源
一、简介Druid是阿里巴巴开源平台上一个数据库连接池实现它结合了C3P0、DBCP、PROXOOL等DB池的优点同时加入了日志监控可以很好的监控DB池连接和SQL的执行情况可以说是针对监控而生的DB连接池(据说是目前最好的连接池)DBCP、c3p0、Druid三大连接池区别https://blog.csdn.net/diyu122222/article/details/78762280二、整合步骤1、pom中添加druid连接池依赖dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.1.8/version/dependency2、application.properties中添加druid监控配置# DataSourcemybatis.config-locationsclasspath:mapper/config/sqlMapconfig.xmlmybatis.mapper-locationsclasspath:mapper/*Mapper.xml# 数据库连接驱动spring.datasource.driver-class-namecom.mysql.jdbc.Driver# 数据库连接地址spring.datasource.url# 数据库用户名spring.datasource.usernameadmin# 数据库用户密码spring.datasource.passwordadmin#druid监控配置spring.datasource.typecom.alibaba.druid.pool.DruidDataSource# 初始化大小最小最大spring.datasource.initialSize5spring.datasource.minIdle5spring.datasource.maxActive20# 配置获取连接等待超时的时间spring.datasource.maxWait60000# 配置间隔多久才进行一次检测检测需要关闭的空闲连接单位是毫秒spring.datasource.timeBetweenEvictionRunsMillis60000# 配置一个连接在池中最小生存的时间单位是毫秒spring.datasource.minEvictableIdleTimeMillis300000spring.datasource.validationQuerySELECT 1 FROM DUALspring.datasource.testWhileIdletruespring.datasource.testOnBorrowfalsespring.datasource.testOnReturnfalse# 打开PSCache并且指定每个连接上PSCache的大小spring.datasource.poolPreparedStatementstruespring.datasource.maxPoolPreparedStatementPerConnectionSize20# 配置监控统计拦截的filters去掉后监控界面sql无法统计wall用于防火墙spring.datasource.filtersstat,wall#合并多个DruidDataSource的监控数据spring.datasource.useGlobalDataSourceStattrue#通过connectProperties属性来打开mergeSql功能慢SQL记录spring.datasource.connectionPropertiesdruid.stat.mergeSqltrue;druid.stat.slowSqlMillis5003、新增DruidConfig监控配置类Configurationpublic class DruidConfig {ConfigurationProperties(prefix spring.datasource)Beanpublic DataSource druid(){return new DruidDataSource();}//1、配置管理后台的Servlet视图Beanpublic ServletRegistrationBean statViewServlet(){ServletRegistrationBean bean new ServletRegistrationBean(new StatViewServlet(), /druid/*);MapString,String initParams new HashMap();//初始化参数initParamsinitParams.put(loginUsername,admin);//登录账号initParams.put(loginPassword,123456);//登录密码initParams.put(allow,); //IP白名单(没有配置或者为空则允许所有访问)//IP黑名单 (存在共同时deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.initParams.put(deny,192.168.12.26);//是否能够重置数据.initParams.put(resetEnable,false);bean.setInitParameters(initParams);return bean;}//2、配置web监控的filter过滤器Beanpublic FilterRegistrationBean webStatFilter(){FilterRegistrationBean bean new FilterRegistrationBean();bean.setFilter(new WebStatFilter());//过滤规则bean.setUrlPatterns(Arrays.asList(/*));MapString,String initParams new HashMap();//添加不需要忽略的格式信息.initParams.put(exclusions,*.js,*.css,/druid/*);bean.setInitParameters(initParams);return bean;}}4、启动应用访问http://localhost:8888/druid输入账号密码