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/

posted @ 2018-04-08 15:21  蕃薯耀  阅读(967)  评论(1编辑  收藏  举报