数据源的自动配置-HikariDataSource
1、导入JDBC场景

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-jdbc</artifactId>
  4. </dependency>

1.MySQL - 图1
数据库驱动?
为什么导入JDBC场景,官方不导入驱动?官方不知道我们接下要操作什么数据库。
数据库版本和驱动版本对应

  1. <!--默认版本:<mysql.version>8.0.22</mysql.version>-->
  2. <dependency>
  3. <groupId>mysql</groupId>
  4. <artifactId>mysql-connector-java</artifactId>
  5. <!--<version>5.1.49</version>-->
  6. </dependency>
  7. 想要修改版本
  8. 1、直接依赖引入具体版本(maven的就近依赖原则)
  9. 2、重新声明版本(maven的属性的就近优先原则)
  10. <properties>
  11. <java.version>1.8</java.version>
  12. <mysql.version>5.1.49</mysql.version>
  13. </properties>

2、分析自动配置

1、自动配置的类

  • DataSourceAutoConfiguration : 数据源的自动配置

    • 修改数据源相关的配置:spring.datasource
    • 数据库连接池的配置,是自己容器中没有DataSource才自动配置的
    • 底层配置好的连接池是:HikariDataSource
      @Configuration(proxyBeanMethods = false)
      @Conditional(PooledDataSourceCondition.class)
      @ConditionalOnMissingBean({ DataSource.class, XADataSource.class })
      @Import({ DataSourceConfiguration.Hikari.class, DataSourceConfiguration.Tomcat.class,
             DataSourceConfiguration.Dbcp2.class, DataSourceConfiguration.OracleUcp.class,
             DataSourceConfiguration.Generic.class, DataSourceJmxConfiguration.class })
      protected static class PooledDataSourceConfiguration
      
  • DataSourceTransactionManagerAutoConfiguration: 事务管理器的自动配置

  • JdbcTemplateAutoConfiguration: JdbcTemplate的自动配置,可以来对数据库进行crud
    • 可以修改这个配置项@ConfigurationProperties(prefix = “spring.jdbc”) 来修改JdbcTemplate
    • @Bean@Primary JdbcTemplate;容器中有这个组件
  • JndiDataSourceAutoConfiguration: jndi的自动配置
  • XADataSourceAutoConfiguration: 分布式事务相关的

    数据库连接(修改配置项).yaml 或 .properties 里面。

    spring:
    datasource:
      url: jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf-8
      username: root
      password: 941941
      driver-class-name: com.mysql.cj.jdbc.Driver
    
    spring:
    jdbc:
      template:
          query-timeout: 3 #查询数据 3 秒超时