news 2026/10/13 12:31:29

Spring Boot 与数据源的集成

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring Boot 与数据源的集成

Spring Boot 与数据源的集成源码分析

Spring Boot 是基于 Spring 框架构建的快速开发平台,它提供了一种自动化配置的方式来简化各种常见的开发任务,其中包括数据源的配置和集成。在 Spring Boot 中,数据源的集成不仅仅依赖于 Spring Data,还通过其强大的自动配置机制帮助开发者轻松地集成和使用不同类型的数据库。Spring Boot 默认支持多种数据源的配置,例如 HikariCP、Tomcat JDBC 和 DBCP2。


1. Spring Boot 数据源自动配置的实现

在 Spring Boot 中,数据源的集成是通过DataSourceAutoConfiguration类实现的,该类位于org.springframework.boot.autoconfigure.jdbc包中。它的主要作用是自动配置数据源。Spring Boot 的自动配置是基于@EnableAutoConfiguration注解和@Configuration注解来实现的。

自动配置流程

java复制

@Configuration @ConditionalOnClass(DataSource.class) @AutoConfigureBefore(DataSourceTransactionManagerAutoConfiguration.class) public class DataSourceAutoConfiguration { @Bean @Primary @ConditionalOnMissingBean(DataSource.class) public DataSource dataSource(DataSourceProperties properties) { HikariDataSource dataSource = new HikariDataSource(); properties.configure(dataSource); return dataSource; } }
  1. @ConditionalOnClass(DataSource.class):确保只有在类路径中存在数据库连接的相关类时才会启用数据源自动配置。
  2. @AutoConfigureBefore(DataSourceTransactionManagerAutoConfiguration.class):确保数据源在事务管理器配置之前进行配置。
  3. @Bean和@Primary:表示默认配置的数据源会被应用到 Spring 容器中,作为DataSource类型的 Bean。

如上代码所示,DataSourceAutoConfiguration会在类路径中包含DataSource类时启用,并在没有显式配置数据源时自动创建DataSource。这里使用的默认数据源是HikariDataSource,它是一个高性能的数据库连接池实现。


2. 数据源的初始化与配置

Spring Boot 通过DataSourceProperties来接收数据源的配置信息。DataSourceProperties是一个配置类,它会从application.properties或application.yml文件中读取数据源的配置信息,如数据库 URL、用户名、密码等。

示例代码

java复制

@ConfigurationProperties(prefix = "spring.datasource") public class DataSourceProperties { private String url; private String username; private String password; private String driverClassName; private String hikari; // Getter 和 Setter 方法 public void configure(HikariDataSource dataSource) { dataSource.setJdbcUrl(this.url); dataSource.setUsername(this.username); dataSource.setPassword(this.password); dataSource.setDriverClassName(this.driverClassName); // 其他 Hikari 配置 } }
  • DataSourceProperties会自动绑定application.properties中配置的数据源参数。
  • 通过上面的配置,DataSourceProperties会自动注入数据库的连接信息,DataSourceAutoConfiguration会利用这些配置信息创建一个HikariDataSource实例,并将其注入到 Spring 容器中。

3. 配置 HikariCP 作为数据源

Spring Boot 默认使用HikariCP作为连接池实现。HikariCP 是目前性能最好的连接池之一,它具备高效、低延迟和高吞吐量的特性。

HikariCP 数据源的配置

在DataSourceAutoConfiguration类中,HikariDataSource会使用DataSourceProperties中的配置信息进行初始化。你可以通过spring.datasource.hikari配置来调整 HikariCP 的各种参数。例如:

properties复制

spring.datasource.hikari.maximum-pool-size=10 spring.datasource.hikari.minimum-idle=5 spring.datasource.hikari.idle-timeout=30000

这些配置项可以通过HikariDataSource的方法进行设置,例如:

java复制

dataSource.setMaximumPoolSize(10); dataSource.setMinimumIdle(5); dataSource.setIdleTimeout(30000);

Spring Boot 通过这种方式将 HikariCP 配置和 Spring 环境进行绑定,并在启动时创建连接池。


4. 多数据源配置

Spring Boot 也支持多数据源配置。假设我们有两个数据源,一个是主数据库,另一个是从数据库,我们需要分别配置两个数据源。

示例配置

在application.properties中进行如下配置:

properties复制

# 主数据源 spring.datasource.primary.url=jdbc:mysql://localhost:3306/primary_db spring.datasource.primary.username=primary_user spring.datasource.primary.password=primary_password # 从数据源 spring.datasource.secondary.url=jdbc:mysql://localhost:3306/secondary_db spring.datasource.secondary.username=secondary_user spring.datasource.secondary.password=secondary_password

在配置类中分别定义两个数据源:

java复制

@Configuration public class DataSourceConfig { @Primary @Bean(name = "primaryDataSource") public DataSource primaryDataSource(DataSourceProperties primaryProperties) { return primaryProperties.initializeDataSourceBuilder().build(); } @Bean(name = "secondaryDataSource") public DataSource secondaryDataSource(DataSourceProperties secondaryProperties) { return secondaryProperties.initializeDataSourceBuilder().build(); } }

此时,primaryDataSource()和secondaryDataSource()会分别创建两个数据源,并通过@Primary注解标记主数据源。


5. 事务管理与数据源集成

Spring Boot 提供了自动配置的数据源事务管理器。在DataSourceAutoConfiguration中,PlatformTransactionManager会根据数据源的配置自动初始化。具体实现如下:

示例代码

java复制

@Bean public PlatformTransactionManager transactionManager(DataSource dataSource) { return new DataSourceTransactionManager(dataSource); }
  • PlatformTransactionManager提供了事务管理的接口。
  • DataSourceTransactionManager是其实现类,用于管理数据库事务。

总结

Spring Boot 通过DataSourceAutoConfiguration和DataSourceProperties提供了强大的数据源自动配置功能,简化了数据源的初始化和管理。默认情况下,Spring Boot 使用HikariCP作为连接池实现,并支持多数据源配置。此外,Spring Boot 还自动配置了事务管理器,使得事务管理与数据源集成更加便捷。通过这些机制,开发者可以轻松地集成和使用不同类型的数据库,而无需复杂的配置。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/11 16:06:21

AI大模型基于LangChain 进行RAG与Agent智能体开发

大模型,英文名叫Large Model,大型模型。早期的时候,也叫Foundation Model,基础模型。 大模型是一个简称,完整的叫法,应该是“人工智能预训练大模型”。预训练,是一项技术,我们后面再…

作者头像 李华
网站建设 2026/10/8 19:15:51

开题报告-基于BS的在线电影视频播放系统的设计与实现

目录 研究背景与意义系统核心功能技术选型创新点设计预期成果应用价值 项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 研究背景与意义 在线电影视频播放系统基于B/S架构(Browser/Server&…

作者头像 李华
网站建设 2026/10/10 10:58:56

【课程设计/毕业设计】基于SSM的疫情健康上报管理系统每日体温填报 异常症状上报(咳嗽、发热等) 数据可视化【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/10/11 21:26:09

SSM毕设选题推荐:基于SSM的手机商城基于SSM实现手机销售商城系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/10/10 10:59:08

刚果总统齐塞克迪达沃斯发言-万祥军| 世界经济论坛·国际科学院组织

‍刚果总统齐塞克迪达沃斯发言-万祥军| 世界经济论坛国际科学院组织 2026年1月,瑞士达沃斯再次成为全球瞩目的焦点。世界经济论坛年会在此召开,来自全球65位国家元首和政府首脑齐聚一堂,共同探讨当前世界面临的最紧迫挑战。在众多重量级发言…

作者头像 李华
网站建设 2026/10/10 10:59:14

AC掉线后,本地转发的AP还能用吗?答案藏在这3个关键点里

在企业无线部署中,AC(无线控制器)作为“大脑”,一旦掉线就容易让人慌神——尤其是开启本地转发模式时,已连用户会不会断网?新用户能不能接入?很多运维同学都会混淆通用场景与本地转发的特殊逻辑,今天就一次性讲透,帮你快速排障、理清真相。 先明确核心前提:企业WLAN…

作者头像 李华