zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    手机获取ip地址
    CoreGraphics 自定义button
    抽奖及背景图片的透明度设置时连着转盘图片也跟着虚幻解决方法
    多个UIcollctionView,返回个数不对错误
    collectionview item 间距
    判断键盘的高度
    orcle 11g 的安装图解
    clone()详解
    isAssignableFrom ,isInstance , Instanceof() 区别
    三元表达式
  • 原文地址:https://www.cnblogs.com/fanshuyao/p/8745172.html
Copyright © 2011-2022 走看看