Spring Boot中自動執(zhí)行sql腳本的實現(xiàn)
說明:所有的代碼基于SpringBoot 2.0.3版本
背景
在應(yīng)用程序啟動后,可以自動執(zhí)行建庫、建表等SQL腳本.下文中以要自動化執(zhí)行people.sql腳本為例說明,腳本在SpringBoot工程中的路徑為:classpath:people.sql,腳本的具體內(nèi)容如下:
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) );
實現(xiàn)核心
在SpringBoot的架構(gòu)中,DataSourceInitializer類可以實現(xiàn)自動執(zhí)行腳本的功能。通過自定義DataSourceInitializer Bean就可以實現(xiàn)按照業(yè)務(wù)要求執(zhí)行特定的腳本。
實現(xiàn)方法
前提
已經(jīng)構(gòu)建了DataSource Bean。
方法
通過@Configuration、@Bean和@Value三個注解實現(xiàn)自定義DataSourceInitializer Bean,現(xiàn)在Bean的定義中實現(xiàn)自動化執(zhí)行腳本的業(yè)務(wù)邏輯。
代碼
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 {
/**
* 構(gòu)建Resource對象
*/
@Value("classpath:schema-all.sql")
private Resource businessScript;
/**
* 自定義Bean實現(xiàn)業(yè)務(wù)的特殊需求
* @param dataSource
* @return
*/
@Bean
public DataSourceInitializer dataSourceInitializer(final DataSource dataSource) {
final DataSourceInitializer initializer = new DataSourceInitializer();
// 設(shè)置數(shù)據(jù)源
initializer.setDataSource(dataSource);
initializer.setDatabasePopulator(databasePopulator());
return initializer;
}
private DatabasePopulator databasePopulator() {
final ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
populator.addScripts(businessScript);
return populator;
}
}
到此這篇關(guān)于Spring Boot中自動執(zhí)行sql腳本的實現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot自動執(zhí)行sql內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springBoot啟動時讓方法自動執(zhí)行的幾種實現(xiàn)方式
- 解決Springboot項目啟動后自動創(chuàng)建多表關(guān)聯(lián)的數(shù)據(jù)庫與表的方案
- 解決spring boot啟動掃描不到自定義注解的問題
- Spring Boot 2 實戰(zhàn):自定義啟動運行邏輯實例詳解
- SpringBoot啟動及自動裝配原理過程詳解
- springboot 基于Tomcat容器的自啟動流程分析
- springboot+idea熱啟動設(shè)置方法(自動加載)
- SpringBoot項目執(zhí)行腳本 自動拉取最新代碼并重啟的實例內(nèi)容
- springboot自定義stater啟動流程
- springboot自動重啟的簡單方法
- Spring Boot啟動時調(diào)用自己的非web邏輯
- Spring Boot 項目啟動自動執(zhí)行方法的兩種實現(xiàn)方式
相關(guān)文章
SpringBoot結(jié)合Redis實現(xiàn)接口冪等性的示例代碼
本文主要介紹了SpringBoot結(jié)合Redis實現(xiàn)接口冪等性的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06
Java字符串拼接+和StringBuilder的比較與選擇
Java 提供了兩種主要的方式:使用 "+" 運算符和使用 StringBuilder 類,本文主要介紹了Java字符串拼接+和StringBuilder的比較與選擇,感興趣的可以了解一下2023-10-10

