Spring Boot中自动执行sql脚本的实现
说明:所有的代码基于SpringBoot 2.0.3版本
背景
在应用程序启动后,可以自动执行建库、建表等SQL脚本.下文中以要自动化执行people.sql脚本为例说明,脚本在SpringBoot工程中的路径为:classpath:people.sql,脚本的具体内容如下:
CREATE TABLE IF NOT EXISTS people( persion_id BIGINT NOT NULL AUTO_INCREMENT, first_name VARCHAR(20), last_name VARCHAR(20), PRIMARY KEY (persion_id) );
实现核心
在SpringBoot的架构中,DataSourceInitializer类可以实现自动执行脚本的功能。通过自定义DataSourceInitializer Bean就可以实现按照业务要求执行特定的脚本。
实现方法
前提
已经构建了DataSource Bean。
方法
通过@Configuration、@Bean和@Value三个注解实现自定义DataSourceInitializer Bean,现在Bean的定义中实现自动化执行脚本的业务逻辑。
代码
import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.Resource; import org.springframework.jdbc.datasource.init.DataSourceInitializer; import org.springframework.jdbc.datasource.init.DatabasePopulator; import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator; import javax.sql.DataSource; @Configuration public class BatchTaskDataSourceInitializer { /** * 构建Resource对象 */ @Value("classpath:schema-all.sql") private Resource businessScript; /** * 自定义Bean实现业务的特殊需求 * @param dataSource * @return */ @Bean public DataSourceInitializer dataSourceInitializer(final DataSource dataSource) { final DataSourceInitializer initializer = new DataSourceInitializer(); // 设置数据源 initializer.setDataSource(dataSource); initializer.setDatabasePopulator(databasePopulator()); return initializer; } private DatabasePopulator databasePopulator() { final ResourceDatabasePopulator populator = new ResourceDatabasePopulator(); populator.addScripts(businessScript); return populator; } }
到此这篇关于Spring Boot中自动执行sql脚本的实现的文章就介绍到这了,更多相关SpringBoot自动执行sql内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
- springBoot启动时让方法自动执行的几种实现方式
- 解决Springboot项目启动后自动创建多表关联的数据库与表的方案
- 解决spring boot启动扫描不到自定义注解的问题
- Spring Boot 2 实战:自定义启动运行逻辑实例详解
- SpringBoot启动及自动装配原理过程详解
- springboot 基于Tomcat容器的自启动流程分析
- springboot+idea热启动设置方法(自动加载)
- SpringBoot项目执行脚本 自动拉取最新代码并重启的实例内容
- springboot自定义stater启动流程
- springboot自动重启的简单方法
- Spring Boot启动时调用自己的非web逻辑
- Spring Boot 项目启动自动执行方法的两种实现方式
相关文章
Java字符串拼接+和StringBuilder的比较与选择
Java 提供了两种主要的方式:使用 "+" 运算符和使用 StringBuilder 类,本文主要介绍了Java字符串拼接+和StringBuilder的比较与选择,感兴趣的可以了解一下2023-10-10
最新评论