SpringBoot数据库初始化-datasource配置方式
来源:网友推荐 更新:2025-05-15
在项目开发中,数据库初始化是一个关键步骤。在已有表结构的基础上开发时,通常直接初始化对应的数据。然而,在项目形式的工作中,所有库表结构变更、数据的初始化和更新等需要保存在项目工程中,这是liqubase等工具的重要应用场景。本文将探讨SpringBoot环境下如何实现项目启动后的数据库表初始化。
首先,搭建一个标准的SpringBoot项目,使用SpringBoot 2.2.1.RELEASE版本、maven 3.5.3和IDEA开发,使用MySql数据库,版本为8.0.31。
核心配置位于`application.yml`文件中,添加了数据库链接配置的几个关键项。配置文件中指定了两个SQL文件:一个用于建表的DDL,另一个用于初始化数据的DML。
将DDL和DML分别保存在`resources/config-schema.sql`和`resources/config-data.sql`文件中。
启动项目后,正常执行配置中的两个SQL文件,实现数据库表的初始化。为验证过程,可以编写简单的示例程序。
在实际使用中,可能会遇到配置不生效的问题。例如,当库表已经存在时,只指定`data.sql`文件而不包含`schema.sql`文件,导致初始化数据的SQL文件未执行。此时,可以将`data.sql`中的内容合并至`schema.sql`文件中。
在SpringBoot 2.5+版本中,使用`spring.sql.init`替代原有的配置项。需要关注配置参数的说明,确保正确配置。
配置完成后,发现SQL未按预期执行时,检查`spring.datasource.initialization-mode`配置是否存在且值为`always`。同时,表结构创建和数据初始化完成后,再次启动项目时可能会遇到报错,提示表已经存在。解决方法是将`spring.datasource.initialization-mode`设置为`none`。
本文介绍了SpringBoot环境下数据库初始化的基本方式。除了本文介绍的`spring.datasource`配置,还有`spring.jpa`配置方式。对于配置方式的不足之处,后续将探讨如何使用`DataSourceInitializer`实现自主可控的数据初始化,并介绍基于liquibase的数据库版本管理记录。
松阳县粉嫩:[六]Java开发进阶之路:Spring Boot mybatis-plus与H2数据库快速上手指南...
毋雅18528702377: application.yaml 是我由 application.properties 重命名得到的 二、pom.xml 添加依赖 lombok\/mybatis-plus\/h2 三、application.yaml 配置参数 应用启动时,Spring Boot会检测到schema-locations和data-locations属性,并根据这些位置找到相应的SQL文件。然后,它会执行这些文件中的SQL语句进行初始化数据库结构...
松阳县粉嫩:如何通过idea自动化部署springboot项目?
毋雅18528702377: 若IDEA显示代码错误,检查是否已配置JDK。调整设置,确保与电脑的JDK环境兼容,执行配置并刷新,依赖会自动下载。步骤三:验证数据库配置 检查SpringBoot项目中的applicationyml文件,确认数据库名称、账号、密码与本地MySQL设置一致。如无法连接,先解决数据库连接问题,确保数据库可用。初始化数据库 使用数据库...
松阳县粉嫩:谈谈SpringBoot中的@PostConstruct与
毋雅18528702377: 在工作中,遇到初始化问题时,我了解到SpringBoot中的@PostConstruct与CommandLineRunner接口。两者皆可用于初始化操作,如启动项目时需要数据库初始化、加载配置等。CommandLineRunner特点:在服务启动后立即执行,支持排序多个实例,并根据@order注解排序。PostConstruct则在类加载时执行初始化操作,通常在Service...
松阳县粉嫩:SpringBoot配置DataSource的两种方式
毋雅18528702377: 另一种方式是自动配置,它更便于管理,尤其当项目规模扩大时。自动配置通过Spring Boot的内置逻辑,根据application.yml中的配置自动创建和初始化DataSource。同样在application.yml中,只需关注数据库相关部分,无需显式指定DataSource的实现类。例如:yaml spring:datasource:url: ${spring.datasource.url} ...
松阳县粉嫩:Spring Boot 集成 Liquibase,数据库也能做版本控制
毋雅18528702377: 初始化数据:使用命令生成模板文件,填充内容并应用到数据库 Liquibase提供了可视化界面和插件生成数据库修改文档,操作简便且直观。同时,解决控制台输出问题,通过修改文件夹名称至“changelogs”,即可避免读取不必要的文件。Liquibase的集成为SpringBoot项目提供了强大的数据库版本控制功能,提高开发效率与代码...
松阳县粉嫩:Spring Boot 2.5 重磅发布,黑暗模式太炸了!
毋雅18528702377: 新版本支持 Java 16,兼容 Java 8,对于基于 Java 16 进行学习和开发的 Spring Boot 用户极为有利。此外,版本还优化了 Gradle 7 插件、支持 Jetty 10 内嵌,同时提升了内置容器对 HTTP\/2 over TCP 的支持。数据源初始化机制进行了重新设计,调整了数据源参数配置,并对 Flyway 和 Liquibase 的使用...
松阳县粉嫩:SpringBoot中CommandLineRunner详解(含源码)
毋雅18528702377: 可以实现CommandLineRunner接口,在run方法中加载一些初始化数据到数据库等。适合做一些数据预加载工作。这里创建了一个DataInitializer类,实现CommandLineRunner接口。在run()方法中,我们注入了UserRepository,然后创建了两个用户对象保存到数据库中。这个类会在Spring Boot应用启动完成后执行,从而实现了数据...
松阳县粉嫩:终于理解Spring Boot 为什么青睐HikariCP了,图解的太透彻了!
毋雅18528702377: 源码解析:HikariCP与连接获取流程 HikariCP的核心在于高效且稳定的连接获取机制。其获取连接的流程主要由以下几个关键步骤组成:初始化连接池:在Spring Boot应用启动时,会通过配置加载HikariCP实例,初始化连接池。获取连接:当应用需要数据库连接时,通过HikariDataSource的getConnection方法发起请求。此方法...
松阳县粉嫩:使用Liquibase 管理数据库版本-SpringBoot 2.7 .2 实战基础 建议收藏...
毋雅18528702377: 在Maven项目中添加Liquibase插件,用于生成changelog文件。执行插件逆向生成初始changelog,包括表结构创建和数据初始化。将生成的changelog文件添加到SpringBoot项目的资源目录中,并配置主changelog文件,引用其他模块的changelog。在changeSet中定义表结构和数据操作,注意changeSet一旦执行不可修改,需要新建changeSet...
松阳县粉嫩:springboot怎么运行(springboot怎么运行html)
毋雅18528702377: 你能够使用SpringBoot创建Java应用并通过java-jar来运行或者创建传统的通过war来部署的应用。SpringBoot也提供了一个命令行工具来运行spring脚本。springBoot的启动可以分为两个部分,第一部分:SpringApplication的实例化;第二部分:调用该实例运行run方法(springboot初始化)。二、springboot配置文件1、创建...
首先,搭建一个标准的SpringBoot项目,使用SpringBoot 2.2.1.RELEASE版本、maven 3.5.3和IDEA开发,使用MySql数据库,版本为8.0.31。
核心配置位于`application.yml`文件中,添加了数据库链接配置的几个关键项。配置文件中指定了两个SQL文件:一个用于建表的DDL,另一个用于初始化数据的DML。
将DDL和DML分别保存在`resources/config-schema.sql`和`resources/config-data.sql`文件中。
启动项目后,正常执行配置中的两个SQL文件,实现数据库表的初始化。为验证过程,可以编写简单的示例程序。
在实际使用中,可能会遇到配置不生效的问题。例如,当库表已经存在时,只指定`data.sql`文件而不包含`schema.sql`文件,导致初始化数据的SQL文件未执行。此时,可以将`data.sql`中的内容合并至`schema.sql`文件中。
在SpringBoot 2.5+版本中,使用`spring.sql.init`替代原有的配置项。需要关注配置参数的说明,确保正确配置。
配置完成后,发现SQL未按预期执行时,检查`spring.datasource.initialization-mode`配置是否存在且值为`always`。同时,表结构创建和数据初始化完成后,再次启动项目时可能会遇到报错,提示表已经存在。解决方法是将`spring.datasource.initialization-mode`设置为`none`。
本文介绍了SpringBoot环境下数据库初始化的基本方式。除了本文介绍的`spring.datasource`配置,还有`spring.jpa`配置方式。对于配置方式的不足之处,后续将探讨如何使用`DataSourceInitializer`实现自主可控的数据初始化,并介绍基于liquibase的数据库版本管理记录。
毋雅18528702377: application.yaml 是我由 application.properties 重命名得到的 二、pom.xml 添加依赖 lombok\/mybatis-plus\/h2 三、application.yaml 配置参数 应用启动时,Spring Boot会检测到schema-locations和data-locations属性,并根据这些位置找到相应的SQL文件。然后,它会执行这些文件中的SQL语句进行初始化数据库结构...
毋雅18528702377: 若IDEA显示代码错误,检查是否已配置JDK。调整设置,确保与电脑的JDK环境兼容,执行配置并刷新,依赖会自动下载。步骤三:验证数据库配置 检查SpringBoot项目中的applicationyml文件,确认数据库名称、账号、密码与本地MySQL设置一致。如无法连接,先解决数据库连接问题,确保数据库可用。初始化数据库 使用数据库...
毋雅18528702377: 在工作中,遇到初始化问题时,我了解到SpringBoot中的@PostConstruct与CommandLineRunner接口。两者皆可用于初始化操作,如启动项目时需要数据库初始化、加载配置等。CommandLineRunner特点:在服务启动后立即执行,支持排序多个实例,并根据@order注解排序。PostConstruct则在类加载时执行初始化操作,通常在Service...
毋雅18528702377: 另一种方式是自动配置,它更便于管理,尤其当项目规模扩大时。自动配置通过Spring Boot的内置逻辑,根据application.yml中的配置自动创建和初始化DataSource。同样在application.yml中,只需关注数据库相关部分,无需显式指定DataSource的实现类。例如:yaml spring:datasource:url: ${spring.datasource.url} ...
毋雅18528702377: 初始化数据:使用命令生成模板文件,填充内容并应用到数据库 Liquibase提供了可视化界面和插件生成数据库修改文档,操作简便且直观。同时,解决控制台输出问题,通过修改文件夹名称至“changelogs”,即可避免读取不必要的文件。Liquibase的集成为SpringBoot项目提供了强大的数据库版本控制功能,提高开发效率与代码...
毋雅18528702377: 新版本支持 Java 16,兼容 Java 8,对于基于 Java 16 进行学习和开发的 Spring Boot 用户极为有利。此外,版本还优化了 Gradle 7 插件、支持 Jetty 10 内嵌,同时提升了内置容器对 HTTP\/2 over TCP 的支持。数据源初始化机制进行了重新设计,调整了数据源参数配置,并对 Flyway 和 Liquibase 的使用...
毋雅18528702377: 可以实现CommandLineRunner接口,在run方法中加载一些初始化数据到数据库等。适合做一些数据预加载工作。这里创建了一个DataInitializer类,实现CommandLineRunner接口。在run()方法中,我们注入了UserRepository,然后创建了两个用户对象保存到数据库中。这个类会在Spring Boot应用启动完成后执行,从而实现了数据...
毋雅18528702377: 源码解析:HikariCP与连接获取流程 HikariCP的核心在于高效且稳定的连接获取机制。其获取连接的流程主要由以下几个关键步骤组成:初始化连接池:在Spring Boot应用启动时,会通过配置加载HikariCP实例,初始化连接池。获取连接:当应用需要数据库连接时,通过HikariDataSource的getConnection方法发起请求。此方法...
毋雅18528702377: 在Maven项目中添加Liquibase插件,用于生成changelog文件。执行插件逆向生成初始changelog,包括表结构创建和数据初始化。将生成的changelog文件添加到SpringBoot项目的资源目录中,并配置主changelog文件,引用其他模块的changelog。在changeSet中定义表结构和数据操作,注意changeSet一旦执行不可修改,需要新建changeSet...
毋雅18528702377: 你能够使用SpringBoot创建Java应用并通过java-jar来运行或者创建传统的通过war来部署的应用。SpringBoot也提供了一个命令行工具来运行spring脚本。springBoot的启动可以分为两个部分,第一部分:SpringApplication的实例化;第二部分:调用该实例运行run方法(springboot初始化)。二、springboot配置文件1、创建...