微服务架构项目实战SpringBoot中的 Druid整合 与集成

微服务架构项目实战SpringBoot中的 Druid整合 与集成

一、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类配置有

在此我向大家推荐一个架构学习交流群。交流学习群号:697579751 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

猜你喜欢

转载自my.oschina.net/u/3773144/blog/1810798