目录

  • 2.9、配置数据源
  • 2.9.1、HikariCP
  • 2.9.2、Druid
  • 1、配置
  • 2、开启监控


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>

spring boot 配置jndi数据源 springboot配置dbcp数据源_mysql

  1. 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
  1. 测试
    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);
    }
}

spring boot 配置jndi数据源 springboot配置dbcp数据源_spring boot_02

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>

spring boot 配置jndi数据源 springboot配置dbcp数据源_spring_03

  1. 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                 #删除数据
  1. 测试:再运行上面的Test,发现现在变成了druil了
2、开启监控

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

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

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


spring boot 配置jndi数据源 springboot配置dbcp数据源_spring boot_04