SpringBoot配置数据源(HikariCP、Druid)

Java知识点总结:想看的可以从这里进入

2.9、配置数据源

2.9.1、HikariCP

Springboot内置的JDBC启动器默认的数据源为:HikariCP

  1. 导入JDBC的启动器

    <!--JDBC启动器-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <!--mysql的依赖-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    

    image-20220921175649963

  2. yml文件中配置数据源

    spring:
      #数据源配置
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/库名?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
        username: root
        password: 123456
    
  3. 测试

    Spring Boot 提供了一个名为 JdbcTemplate 的轻量级数据访问工具,它是对 JDBC 的封装。Spring Boot 对 JdbcTemplate 提供了默认自动配置,可以直接使用 @Autowired 或构造函数将它注入到 bean 中使用。

    @SpringBootTest
    public class JdbcTest {
          
          
        @Autowired
        private DataSource dataSource;
        @Autowired
        JdbcTemplate jdbcTemplate;
        @Test
        public void test() throws SQLException {
          
          
            System.out.println("默认数据源为:" + dataSource.getClass());
            String username = jdbcTemplate.queryForObject("select username from `user` where user_id=1",String.class);
            System.out.println(username);
        }
    }
    
image-20220921203929704

2.9.2、Druid

1、配置

Druid 是阿里推出的,支持所有 JDBC(Oracle、MySQL、SQL Server 和 H2等 )兼容的数据库连接池。Druid 结合了 C3P0、DBCP 和 PROXOOL 等数据源产品的优点,同时还加入了强大的监控功能。通过 Druid 的监控功能,可以实时观察数据库连接池和 SQL 的运行情况,帮助用户及时排查出系统中存在的问题。

  1. 导入Druid 的依赖

    <!--JDBC启动器-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <!--mysql的依赖-->
    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <version>8.0.32</version>
    </dependency>
    <!--德鲁伊连接池-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.2.6</version>
    </dependency>
    

    image-20220921204117109

  2. yml文件中配置属性

    spring:
      #数据源配置
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/库名?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
        username: root
        password: 123456
        type: com.alibaba.druid.pool.DruidDataSource    #配置druid,默认为HikariCP
    
        # 德鲁伊数据池的一些专有配置
        druid:
          initial-size: 5    #初始化连接大小
          min-idle: 5        #最小、大连接池数量
          max-active: 20
          max-wait: 60000    #获取连接时最大等待时间,单位毫秒
          time-between-eviction-runs-millis: 60000  #多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
          min-evictable-idle-time-millis: 300000    #配置一个连接在池中最小生存的时间,单位是毫秒
          validation-query: SELECT 1 FROM DUAL      #测试连接的有效性
          #配置从连接池获取连接时和向连接池归还连接时,是否检查连接有效性。
          test-while-idle: true        #申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性
          test-on-borrow: false        #获取连接时执行检测,建议关闭,影响性能
          test-on-return: false        #归还连接时执行检测,建议关闭,影响性能
          pool-prepared-statements: false  #是否开启PSCache,oracle建议开启,mysql5.5以下的版本建议关闭
          max-open-prepared-statements: -1  #大于0时, poolPreparedStatements自动修改为true。
          max-pool-prepared-statement-per-connection-size: 20     #开启poolPreparedStatements后生效
          
          filters: stat,wall,slf4j      #配置监控统计拦截的filters:stat(监控统计)、wall(放sql注入)、slf4j(日志)
          use-global-data-source-stat: false     # 合并多个DruidDataSource的监控数据
          # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
          connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
    
          #内置监控页面:http://localhost:8080/druid
          stat-view-servlet:
            enabled: true        #是否开启内置监控页面,默认值为 false
            url-pattern: '/druid/*'    #StatViewServlet 的映射路径,即内置监控页面的访问地址
            reset-enable: true         #是否启用重置按钮
            login-username: admin      #内置监控页面的登录页用户名 username
            login-password: admin      #内置监控页面的登录页密码 password
          #开启 SQL 监控
          web-stat-filter:
            enabled: true            #是否开启内置监控中的 Web-jdbc 关联监控的数据
            url-pattern: '/*'        #匹配路径
            exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'   #排除路径
            session-stat-enable: true            #是否监控session
          aop-patterns: com.yu.springboot.*    #Spring监控AOP切入点,如x.y.z.abc.*,配置多个英文逗号分隔
          # 对配置已开启的 filters 即 stat(sql 监控)  wall(防火墙)
          filter:
            #配置StatFilter (SQL监控配置)
            stat:
              enabled: true                         #SQL 监控
              slow-sql-millis: 1000                 #慢查询
              log-slow-sql: true                    #慢查询SQL
            #配置WallFilter (开启防火墙)
            wall:
              enabled: true                        #开启防火墙
              config:
                update-allow: true                 #允许更新
                drop-table-allow: false            #禁止删表
                insert-allow:  true                #允许插入
                delete-allow: true                 #删除数据
    
  3. 测试:再运行上面的Test,发现现在变成了druil了

    image-20220921204316106

2、开启监控

Druid 内置提供了一个 StatViewServlet ,这个 Servlet 可以开启 Druid 的内置监控页面功能, 展示 Druid 的统计信息,它的主要用途如下:

  • 提供监控信息展示的 html 页面
  • 提供监控信息的 JSON API

启动项目后,打开监控页面:http://localhost:8080/druid/index.html

image-20220922185312857

猜你喜欢

转载自blog.csdn.net/yuandfeng/article/details/129709731