Spring Boot JDBC:加载DataSource过程的源码分析及yml中DataSource的配置

本文深入剖析了Spring Boot在启动时如何自动配置DataSource,特别是对EmbeddedDatabaseConfiguration和PooledDataSourceConfiguration的使用。内容涉及HikariDataSource作为默认连接池的配置与加载过程,以及在application.yml中配置DataSource的方式。通过源码分析,展示了从创建HikariPool对象到获取Connection的详细步骤。
摘要由CSDN通过智能技术生成

Spring Boot实现了自动加载DataSource及相关配置。当然,使用时加上@EnableAutoConfiguration注解是必须的。下面就是对这一部分的源码分析。

(1)Spring Boot启动后会调用org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration。下面是部分源码。

 1 @Configuration
 2 @ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class })
 3 @EnableConfigurationProperties(DataSourceProperties.class)
 4 @Import({ DataSourcePoolMetadataProvidersConfiguration.class,
 5         DataSourceInitializationConfiguration.class })
 6 public class DataSourceAutoConfiguration {
 7 
 8     @Configuration
 9     @Conditional(EmbeddedDatabaseCondition.class)
10     @ConditionalOnMissingBean({ DataSource.class, XADataSource.class })
11     @Import(EmbeddedDataSourceConfiguration.class)
12     protected static class EmbeddedDatabaseConfiguration {
13     }
14 
15     @Configuration
16     @Conditional(PooledDataSourceCondition.class)
17     @ConditionalOnMissingBean({ DataSource.class, XADataSource.class })
18     @Import({ DataSourceConfiguration.Hikari.class, DataSourceConfiguration.Tomcat.class,
19             DataSourceConfiguration.Dbcp2.class, DataSourceConfiguration.Generic.class,
20             DataSourceJmxConfiguration.class })
21     protected static class PooledDataSourceConfiguration {
22     }
23     ......
24 }

我们从中可以看出,DataSourceAutoConfiguration中有两个嵌套类,一个是EmbeddedDatabaseConfiguration,另一个是PooledDataSourceConfiguration

EmbeddedDatabaseConfiguration表示已经嵌入Spring Boot的DataSource,除了Maven中加入相应的Driver,可以不做其他额外配置就能使用。从EmbeddedDatabaseType类可以看出,Spring Boot的内嵌DataSource支持HSQL,H2,DERBY这三种DB。

PooledDataSourceConfiguration表示Spring Boot还支持一些实现Pool的DataSource。从org.springframework.boot.jdbc.D

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值