• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

SpringBoot配置Druid

武飞扬头像
小小张自由—>张有博
帮助1

目录

一、JDBC连接数据库

1. 创建项目,导入需要的依赖

2. 配置数据源

3. 测试连接

4. 项目启动成功,能够看出连接信息

二、配置数据库连接池Druid

1. 添加druid的maven配置

2. 添加数据源的配置

3. 重新执行测试代码,发现数据库连接池已经更改

4. 添加Druid其他增强的配置

5. 写配置类加载Druid的配置

6. 引入log4j的依赖

7. 测试一下数据库连接

8. 查看控制台的监控信息


Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。

Druid 是一个 JDBC 组件库,包含数据库连接池、SQL Parser 等组件, 被大量业务和技术产品使用或集成,经历过最严苛线上业务场景考验,是你值得信赖的技术产品。

一、JDBC连接数据库

1. 创建项目,导入需要的依赖

  1.  
    <dependency>
  2.  
    <groupId>org.springframework.boot</groupId>
  3.  
    <artifactId>spring-boot-starter-jdbc</artifactId>
  4.  
    </dependency>
  5.  
    <dependency>
  6.  
    <groupId>mysql</groupId>
  7.  
    <artifactId>mysql-connector-java</artifactId>
  8.  
    <scope>runtime</scope>
  9.  
    </dependency>

2. 配置数据源

  1.  
    server:
  2.  
    port: 8085
  3.  
    spring:
  4.  
    application:
  5.  
    name: user-service
  6.  
    datasource:
  7.  
    driver-class-name: com.mysql.jdbc.Driver
  8.  
    url: jdbc:mysql://localhost:3306/hm49?serverTimezone=UTC&useUnicode=true@characterEncoding=utf-8
  9.  
    username: root
  10.  
    password: root

3. 测试连接

  1.  
     
  2.  
    import org.junit.jupiter.api.Test;
  3.  
    import org.springframework.beans.factory.annotation.Autowired;
  4.  
    import org.springframework.boot.test.context.SpringBootTest;
  5.  
     
  6.  
    import javax.sql.DataSource;
  7.  
    import java.sql.Connection;
  8.  
    import java.sql.SQLException;
  9.  
     
  10.  
    @SpringBootTest
  11.  
    class DataApplicationTests {
  12.  
     
  13.  
    @Autowired
  14.  
    DataSource dataSource;
  15.  
     
  16.  
    /**
  17.  
    * 验证数据库连接
  18.  
    * @throws Exception
  19.  
    */
  20.  
    @Test
  21.  
    void testConnection() throws Exception {
  22.  
    System.out.println(dataSource.getClass());
  23.  
    Connection connection = dataSource.getConnection();
  24.  
    System.out.println(connection);
  25.  
    connection.close();
  26.  
    }
  27.  
     
  28.  
    /**
  29.  
    * 验证连接池的配置信息,是否生效
  30.  
    * @throws Exception
  31.  
    */
  32.  
    /*@Test
  33.  
    void contextLoads() throws Exception {
  34.  
    System.out.println(dataSource.getClass());
  35.  
    DruidDataSource druidDataSource = (DruidDataSource) dataSource;
  36.  
    System.out.println("initSize:" druidDataSource.getInitialSize());
  37.  
    System.out.println("maxSize:" druidDataSource.getMaxActive());
  38.  
    Connection connection = dataSource.getConnection();
  39.  
    System.out.println(connection);
  40.  
    connection.close();
  41.  
    }*/
  42.  
     
  43.  
    }
学新通

4. 项目启动成功,能够看出连接信息

      默认配置的数据源为class com.zaxxer.hikari.HikariDataSource

二、配置数据库连接池Druid

1. 添加druid的maven配置

  1.  
     
  2.  
    <dependency>
  3.  
    <groupId>com.alibaba</groupId>
  4.  
    <artifactId>druid</artifactId>
  5.  
    <version>1.1.12</version>
  6.  
    </dependency>

2. 添加数据源的配置

  1.  
    server:
  2.  
    port: 8085
  3.  
    spring:
  4.  
    application:
  5.  
    name: user-service
  6.  
    datasource:
  7.  
    driver-class-name: com.mysql.jdbc.Driver
  8.  
    url: jdbc:mysql://localhost:3306/hm49?serverTimezone=UTC&useUnicode=true@characterEncoding=utf-8
  9.  
    username: root
  10.  
    password: root
  11.  
    type: com.alibaba.druid.pool.DruidDataSource

3. 重新执行测试代码,发现数据库连接池已经更改

      此时配置的数据源为com.alibaba.druid.pool.DruidDataSource

4. 添加Druid其他增强的配置

官网介绍如下:常见问题 · alibaba/druid Wiki · GitHub

  1.  
    server:
  2.  
    port: 8085
  3.  
    spring:
  4.  
    application:
  5.  
    name: user-service
  6.  
    datasource:
  7.  
    driver-class-name: com.mysql.jdbc.Driver
  8.  
    url: jdbc:mysql://localhost:3306/hm49?serverTimezone=UTC&useUnicode=true@characterEncoding=utf-8
  9.  
    username: root
  10.  
    password: root
  11.  
    type: com.alibaba.druid.pool.DruidDataSource
  12.  
    #Spring Boot 默认是不注入这些属性值的,需要自己绑定
  13.  
    #druid 数据源专有配置
  14.  
    initialSize: 5
  15.  
    minIdle: 5
  16.  
    maxActive: 20
  17.  
    maxWait: 60000
  18.  
    timeBetweenEvictionRunsMillis: 60000
  19.  
    minEvictableIdleTimeMillis: 300000
  20.  
    validationQuery: SELECT 1 FROM DUAL
  21.  
    testWhileIdle: true
  22.  
    testOnBorrow: false
  23.  
    testOnReturn: false
  24.  
    poolPreparedStatements: true
  25.  
     
  26.  
    #配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入
  27.  
    #如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority
  28.  
    #则导入 log4j 依赖即可,Maven 地址: https://mvnrepository.com/artifact/log4j/log4j
  29.  
    filters: stat,wall,log4j
  30.  
    maxPoolPreparedStatementPerConnectionSize: 20
  31.  
    useGlobalDataSourceStat: true
  32.  
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
  33.  
     
  34.  
    #第一步连接数据库
  35.  
    #第二步配置连接池 type
  36.  
    #第三部测试查询jdbcTemplate.queryForList(sql);
  37.  
    #第四部添加连接池配置
学新通

5. 写配置类加载Druid的配置

  1.  
     
  2.  
    import com.alibaba.druid.pool.DruidDataSource;
  3.  
    import com.alibaba.druid.support.http.StatViewServlet;
  4.  
    import com.alibaba.druid.support.http.WebStatFilter;
  5.  
    import org.springframework.boot.context.properties.ConfigurationProperties;
  6.  
    import org.springframework.boot.web.servlet.FilterRegistrationBean;
  7.  
    import org.springframework.boot.web.servlet.ServletRegistrationBean;
  8.  
    import org.springframework.context.annotation.Bean;
  9.  
    import org.springframework.context.annotation.Configuration;
  10.  
     
  11.  
    import javax.servlet.Servlet;
  12.  
    import javax.sql.DataSource;
  13.  
    import java.util.Arrays;
  14.  
    import java.util.HashMap;
  15.  
    import java.util.Map;
  16.  
     
  17.  
    import com.alibaba.druid.pool.DruidDataSource;
  18.  
    import org.springframework.boot.context.properties.ConfigurationProperties;
  19.  
    import org.springframework.context.annotation.Bean;
  20.  
    import org.springframework.context.annotation.Configuration;
  21.  
     
  22.  
    @Configuration
  23.  
    public class DruidConfig {
  24.  
    @ConfigurationProperties(prefix = "spring.datasource")
  25.  
    @Bean
  26.  
    public DataSource druidDataSource(){
  27.  
    return new DruidDataSource();
  28.  
    }
  29.  
     
  30.  
    @Bean
  31.  
    public ServletRegistrationBean druidServletRegistrationBean(){
  32.  
    ServletRegistrationBean<Servlet> servletRegistrationBean = new ServletRegistrationBean<>(new StatViewServlet(),"/druid/*");
  33.  
    Map<String,String> initParams = new HashMap<>();
  34.  
    initParams.put("loginUsername","admin");
  35.  
    initParams.put("loginPassword","123456");
  36.  
    //后台允许谁可以访问
  37.  
    //initParams.put("allow", "localhost"):表示只有本机可以访问
  38.  
    //initParams.put("allow", ""):为空或者为null时,表示允许所有访问
  39.  
    initParams.put("allow","");
  40.  
    //deny:Druid 后台拒绝谁访问
  41.  
    // initParams.put("msb", "192.168.1.20");//表示禁止此ip访问
  42.  
     
  43.  
    servletRegistrationBean.setInitParameters(initParams);
  44.  
    return servletRegistrationBean;
  45.  
    }
  46.  
     
  47.  
    //配置 Druid 监控 之 web 监控的 filter
  48.  
    //WebStatFilter:用于配置Web和Druid数据源之间的管理关联监控统计
  49.  
    @Bean
  50.  
    public FilterRegistrationBean webStatFilter() {
  51.  
    FilterRegistrationBean bean = new FilterRegistrationBean();
  52.  
    bean.setFilter(new WebStatFilter());
  53.  
     
  54.  
    //exclusions:设置哪些请求进行过滤排除掉,从而不进行统计
  55.  
    Map<String, String> initParams = new HashMap<>();
  56.  
    initParams.put("exclusions", "*.js,*.css,/druid/*");
  57.  
    bean.setInitParameters(initParams);
  58.  
     
  59.  
    //"/*" 表示过滤所有请求
  60.  
    bean.setUrlPatterns(Arrays.asList("/*"));
  61.  
    return bean;
  62.  
    }
  63.  
    }
学新通

6. 引入log4j的依赖

  1.  
    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
  2.  
    <dependency>
  3.  
    <groupId>log4j</groupId>
  4.  
    <artifactId>log4j</artifactId>
  5.  
    <version>1.2.17</version>
  6.  
    </dependency>

7. 测试一下数据库连接

  1.  
    import org.springframework.beans.factory.annotation.Autowired;
  2.  
    import org.springframework.jdbc.core.JdbcTemplate;
  3.  
    import org.springframework.stereotype.Controller;
  4.  
     
  5.  
    import org.springframework.web.bind.annotation.RequestMapping;
  6.  
    import org.springframework.web.bind.annotation.RestController;
  7.  
     
  8.  
    import java.util.List;
  9.  
     
  10.  
     
  11.  
    @RestController
  12.  
    public class JDBCController {
  13.  
     
  14.  
    @Autowired
  15.  
    JdbcTemplate jdbcTemplate;
  16.  
     
  17.  
    @RequestMapping("selectAll")
  18.  
    public List<Map<String,Object>> selectAll(){
  19.  
    String sql = "select * from tb_user";
  20.  
    List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
  21.  
    return maps;
  22.  
    }
  23.  
     
  24.  
     
  25.  
    }
学新通

8. 查看控制台的监控信息

http://localhost:8085/druid/login.html

学新通

学新通

如果本篇博客对您有一定的帮助,大家记得留言 点赞 收藏

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfkjibf
系列文章
更多 icon
同类精品
更多 icon
继续加载