springboot的自动装配和默认的连接池

如果什么都不设置,默认的数据源是hikari连接池。

过程

DataSourceAutoConfiguration 自动装配类

@Configuration
@ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class })
@EnableConfigurationProperties(DataSourceProperties.class)
@Import({ DataSourcePoolMetadataProvidersConfiguration.class, DataSourceInitializationConfiguration.class })
public class DataSourceAutoConfiguration {}

@EnableConfigurationProperties(DataSourceProperties.class) 表示支持属性配置

如果没有其他数据源,就使用嵌入数据源

@Configuration
@Conditional(EmbeddedDatabaseCondition.class)
@ConditionalOnMissingBean({ DataSource.class, XADataSource.class })
@Import(EmbeddedDataSourceConfiguration.class)
protected static class EmbeddedDatabaseConfiguration {

}

在找不到数据源的时候,依次导入数据源

@Configuration
@Conditional(PooledDataSourceCondition.class)
@ConditionalOnMissingBean({ DataSource.class, XADataSource.class })
@Import({ DataSourceConfiguration.Hikari.class, DataSourceConfiguration.Tomcat.class,
		DataSourceConfiguration.Dbcp2.class, DataSourceConfiguration.Generic.class,
		DataSourceJmxConfiguration.class })
protected static class PooledDataSourceConfiguration {

}

@ConditionalOnMissingBean 这个注解真是666,当找不到数据源时,默认依次使用hikari,tomcat,dbcp2,jmx。

starter里面有什么内容

以spring-boot-starter-web-2.1.7.RELEASE为例,starter里面只有一个MANIFEST.MF:

Manifest-Version: 1.0
Implementation-Title: Spring Boot Web Starter
Automatic-Module-Name: spring.boot.starter.web
Implementation-Version: 2.1.7.RELEASE
Built-By: Spring
Build-Jdk-Spec: 1.8
Created-By: Maven Archiver 3.4.0

他的作用就是引入其他依赖,例如这里是通过
Automatic-Module-Name:
引入spring.boot.starter.web

如何查看是否用的hikari连接池

idea启动界面console的第一行看,无论如何都没有druid字样,只有hikari,这是为什么呢?

排除dataSource的自动加载

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值