当前位置: 首页 > news >正文

SpringBoot Druid整合,SpringBoot 集成Druid

SpringBoot Druid整合,SpringBoot 集成Druid

 

================================

©Copyright 蕃薯耀 2018年4月8日

http://www.cnblogs.com/fanshuyao/

 

源代码下载见:http://fanshuyao.iteye.com/blog/2415353

 

一、SpringBoot引入Druid的依赖包

Xml代码   收藏代码
  1. <dependency>  
  2.   <groupId>mysql</groupId>  
  3.   <artifactId>mysql-connector-java</artifactId>  
  4.   <scope>runtime</scope>  
  5. </dependency>  
  6.           
  7. <dependency>  
  8.   <groupId>com.alibaba</groupId>  
  9.   <artifactId>druid</artifactId>  
  10.   <version>1.1.9</version>  
  11. </dependency>  

 

二、设置配置文件application.properties

Java代码   收藏代码
  1. spring.datasource.url=jdbc:mysql://192.168.1.166:3306/study  
  2. spring.datasource.driver-class-name=com.mysql.jdbc.Driver  
  3. spring.datasource.username=root  
  4. spring.datasource.password=root  
  5. spring.datasource.type=com.alibaba.druid.pool.DruidDataSource  
  6. #spring.datasource.schema=  
  7.   
  8. #数据源其他配置,需要增加Druid的配置类(不然不生效)  
  9. #配置见:com.lqy.springboot.datasource.druid.DruidConfig  
  10. spring.datasource.initialSize=5  
  11. spring.datasource.minIdle=5  
  12. spring.datasource.maxActive=20  
  13. spring.datasource.maxWait=60000  
  14. spring.datasource.timeBetweenEvictionRunsMillis=60000  
  15. spring.datasource.minEvictableIdleTimeMillis=300000  
  16. spring.datasource.validationQuery=SELECT 1 FROM DUAL  
  17. spring.datasource.testWhileIdle=true  
  18. spring.datasource.testOnBorrow=false  
  19. spring.datasource.testOnReturn=false  
  20. spring.datasource.poolPreparedStatements=true  
  21. #配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙    
  22. spring.datasource.filters=stat,wall,log4j  
  23. spring.datasource.maxPoolPreparedStatementPerConnectionSize=20  
  24. spring.datasource.useGlobalDataSourceStat=true    
  25. spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500  

 

三、增加Druid自定义配置类

为什么要增加呢?

因为SpringBoot本身提供的配置只是部分的数据库连接配置,很多Druid需要的属性配置是没有的,如:

Java代码   收藏代码
  1. spring.datasource.initialSize  

 这个属性,SpringBoot是没有的,只有Druid才有,所以需要增加相应的配置类,自动注入。

 

DruidConfig 类

Java代码   收藏代码
  1. import java.util.Arrays;  
  2. import java.util.HashMap;  
  3. import java.util.Map;  
  4.   
  5. import javax.sql.DataSource;  
  6.   
  7. import org.springframework.boot.context.properties.ConfigurationProperties;  
  8. import org.springframework.boot.web.servlet.FilterRegistrationBean;  
  9. import org.springframework.boot.web.servlet.ServletRegistrationBean;  
  10. import org.springframework.context.annotation.Bean;  
  11. import org.springframework.context.annotation.Configuration;  
  12.   
  13. import com.alibaba.druid.pool.DruidDataSource;  
  14. import com.alibaba.druid.support.http.StatViewServlet;  
  15. import com.alibaba.druid.support.http.WebStatFilter;  
  16.   
  17. /** 
  18.  * 导入druid数据源,扩展相关的配置属性 
  19.  * 
  20.  */  
  21. @Configuration  
  22. public class DruidConfig {  
  23.   
  24.     /** 
  25.      * 配置Druid的属性,和DataSource进行绑定,前缀设置为:spring.datasource 
  26.      * 不配置的话,很多初始化的属性是没有绑定的 
  27.      * @return 
  28.      */  
  29.     @Bean  
  30.     @ConfigurationProperties(prefix="spring.datasource")  
  31.     public DataSource druid() {  
  32.         return new DruidDataSource();  
  33.     }  
  34.       
  35.     /** 
  36.      * 配置druid监控 
  37.      * 配置一个管理后台的servlet 
  38.      * 访问地址:http://localhost:8080/druid/ 
  39.      * @return 
  40.      */  
  41.     @Bean  
  42.     public ServletRegistrationBean statViewServlet() {  
  43.         ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");  
  44.         Map<String, String> initParameters = new HashMap<String, String>();  
  45.         initParameters.put("loginUsername", "admin");//属性见:com.alibaba.druid.support.http.ResourceServlet  
  46.         initParameters.put("loginPassword", "123456");  
  47.         initParameters.put("allow", "");//默认允许所有  
  48.         initParameters.put("deny", "");  
  49.         bean.setInitParameters(initParameters);  
  50.         return bean;  
  51.     }  
  52.       
  53.     /**  
  54.      * 配置一个web监控的filter  
  55.      * @return  
  56.      */  
  57.     @Bean  
  58.     public FilterRegistrationBean webStatFilter() {  
  59.         FilterRegistrationBean filterBean = new FilterRegistrationBean();  
  60.         filterBean.setFilter(new WebStatFilter());  
  61.         filterBean.setUrlPatterns(Arrays.asList("/*"));  
  62.           
  63.         Map<String, String> initParameters = new HashMap<String, String>();  
  64.         initParameters.put("exclusions", "*.js,*.css,/druid/*");//属性见:com.alibaba.druid.support.http.WebStatFilter  
  65.         filterBean.setInitParameters(initParameters);  
  66.           
  67.         return filterBean;  
  68.     }  
  69.       
  70.       
  71. }  

 

 四、启动项目,测试数据源连接:

Java代码   收藏代码
  1. import java.sql.Connection;  
  2. import java.sql.SQLException;  
  3.   
  4. import javax.sql.DataSource;  
  5.   
  6. import org.springframework.beans.factory.annotation.Autowired;  
  7. import org.springframework.web.bind.annotation.RequestMapping;  
  8. import org.springframework.web.bind.annotation.RestController;  
  9.   
  10. @RestController  
  11. public class DataSourceController {  
  12.   
  13.     @Autowired  
  14.     private DataSource dataSource;  
  15.       
  16.     @RequestMapping("/dataSource")  
  17.     public String dataSource() {  
  18.         try {  
  19.             System.out.println("dataSource = "+dataSource);  
  20.             Connection conn = dataSource.getConnection();  
  21.             System.out.println("conn = "+conn);  
  22.             return "success";  
  23.         } catch (SQLException e) {  
  24.             e.printStackTrace();  
  25.         }  
  26.         return "end.";  
  27.     }  
  28.       
  29.       
  30. }  

 

五、查看Druid的监控

浏览器打开:http://localhost:8080/druid

登录的账号密码在DruidConfig类配置有

 

================================

©Copyright 蕃薯耀 2018年4月8日

http://www.cnblogs.com/fanshuyao/

相关文章:

  • Exchange 2013 DAG报错“The fully qualified domain name for node “DAG” could notbefound”解决方法...
  • 20165211 2017-2018-2 《Java程序设计》第6周学习总结
  • Cocos2d-JS: 2.编译到安卓和iOS
  • CentOS程序包管理、下
  • Linux-RedHat 9.0 安装-总结
  • 用户登陆
  • 【OCM】Exam Souvenir 20140825
  • ThinkPHP5下自己写日志
  • javascript验证键盘keycode
  • leetcode-169-Majority Element
  • Fabric结合GTID实现Mysql复制高可用
  • 标签button:点击button按钮时,出现了页面自动刷新的情况
  • [转]查询表达式 (F#)
  • UINavigationControlle 之 UINavigationBar及navigationItem关系探讨
  • sublime text2快捷键的使用
  • 【面试系列】之二:关于js原型
  • Akka系列(七):Actor持久化之Akka persistence
  • Create React App 使用
  • Druid 在有赞的实践
  • Java Agent 学习笔记
  • javascript从右向左截取指定位数字符的3种方法
  • LeetCode18.四数之和 JavaScript
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • TCP拥塞控制
  • Vue2.0 实现互斥
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 从零开始的无人驾驶 1
  • 当SetTimeout遇到了字符串
  • 对象管理器(defineProperty)学习笔记
  • 反思总结然后整装待发
  • 使用 Docker 部署 Spring Boot项目
  • 使用Swoole加速Laravel(正式环境中)
  • 思否第一天
  • 一些css基础学习笔记
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​iOS实时查看App运行日志
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​学习一下,什么是预包装食品?​
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #每天一道面试题# 什么是MySQL的回表查询
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • $forceUpdate()函数
  • (06)Hive——正则表达式
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))