欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring?Boot中自動執(zhí)行sql腳本的方法實例

 更新時間:2022年01月10日 10:38:46   作者:大哥你先走  
在SpringBoot的架構(gòu)中,DataSourceInitializer類可以在項目啟動后初始化數(shù)據(jù),我們可以通過自動執(zhí)行自定義sql腳本初始化數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Spring?Boot中自動執(zhí)行sql腳本的相關(guān)資料,需要的朋友可以參考下

說明:所有的代碼基于SpringBoot 2.0.3版本

背景

在應用程序啟動后,可以自動執(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è)務要求執(zhí)行特定的腳本。

實現(xiàn)方法

  • 前提
    已經(jīng)構(gòu)建了DataSource Bean。
  • 方法
    通過@Configuration、@Bean和@Value三個注解實現(xiàn)自定義DataSourceInitializer Bean,現(xiàn)在Bean的定義中實現(xiàn)自動化執(zhí)行腳本的業(yè)務邏輯。
  • 代碼

 

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è)務的特殊需求
     * @param dataSource
     * @return
     */
    @Bean
    public DataSourceInitializer dataSourceInitializer(final DataSource dataSource) {
        final DataSourceInitializer initializer = new DataSourceInitializer();
        // 設置數(shù)據(jù)源
        initializer.setDataSource(dataSource);
        initializer.setDatabasePopulator(databasePopulator());
        return initializer;
    }

    private DatabasePopulator databasePopulator() {
        final ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
        populator.addScripts(businessScript);
        return populator;
    }
}

注意

有兩點需要說明下:

  • db文件夾下的腳本可能有多個,所以,這里要使用PathMatchingResourcePatternResolver,讀取多個.sql的文件;
  • 獲取文件的路徑是classpath*:script/db/*.sql,classpath后加個星號,意思是連jar包中的符合該規(guī)則的文件,都可以獲取到,因為該項目最終會打成jar包來運行,如果不使用這個星號,就會出現(xiàn)在開發(fā)的時,沒有問題,等到了測試或生產(chǎn)環(huán)境,就會出現(xiàn)找不到sql文件問題。當然,這里的文件規(guī)則,需要自己定義好,不要掃到了本不應加載的其他包中的文件了。

總結(jié)

到此這篇關(guān)于Spring Boot中自動執(zhí)行sql腳本的文章就介紹到這了,更多相關(guān)Spring Boot自動執(zhí)行sql腳本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Javaweb狀態(tài)管理的Session和Cookie

    詳解Javaweb狀態(tài)管理的Session和Cookie

    這篇文章主要介紹了Javaweb狀態(tài)管理的Session和Cookie,將瀏覽器與web服務器之間多次交互當做一個整體來處理,并且多次交互所涉及的數(shù)據(jù)(狀態(tài))保存下來,需要的朋友可以參考下
    2023-05-05
  • Spring框架應用的權(quán)限控制系統(tǒng)詳解

    Spring框架應用的權(quán)限控制系統(tǒng)詳解

    在本篇文章里小編給大家整理的是關(guān)于基于Spring框架應用的權(quán)限控制系統(tǒng)的研究和實現(xiàn),需要的朋友們可以學習下。
    2019-08-08
  • Hadoop源碼分析四遠程debug調(diào)試

    Hadoop源碼分析四遠程debug調(diào)試

    本篇是Hadoop源碼分析系列文章第四篇,主要介紹一下Hadoop的遠程debug調(diào)試步驟,后續(xù)本系列文章會持續(xù)更新,有需要的朋友可以借鑒參考下
    2021-09-09
  • java中i = i++和i =++i的深入講解

    java中i = i++和i =++i的深入講解

    這篇文章主要介紹了java中i = i++和i =++i的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • mybatis?獲取更新(update)記錄的id之<selectKey>用法說明

    mybatis?獲取更新(update)記錄的id之<selectKey>用法說明

    這篇文章主要介紹了mybatis?獲取更新(update)記錄的id之<selectKey>用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • SpringBoot使用Quartz無法注入Bean的問題及解決

    SpringBoot使用Quartz無法注入Bean的問題及解決

    這篇文章主要介紹了SpringBoot使用Quartz無法注入Bean的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • java 對象的序列化和反序列化詳細介紹

    java 對象的序列化和反序列化詳細介紹

    這篇文章主要介紹了java 對象的序列化和反序列化的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Java線程的三種創(chuàng)建方式

    Java線程的三種創(chuàng)建方式

    這篇文章主要給大家分享的是ava線程的三種創(chuàng)建方式,Thread、Runnable和Thread、Runnable和Thread,想了解具體方式的小伙伴可以參考下面文章內(nèi)容,希望對你有所幫助
    2021-11-11
  • Kotlin 基礎教程之數(shù)組容器

    Kotlin 基礎教程之數(shù)組容器

    這篇文章主要介紹了Kotlin 基礎教程之數(shù)組容器的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • SpringBoot中的Logging詳解

    SpringBoot中的Logging詳解

    這篇文章主要介紹了SpringBoot中的Logging詳解,log配置可能是被忽視的一個環(huán)節(jié),一般的項目中日志配置好了基本上很少去改動,我們常規(guī)操作是log.info來記錄日志內(nèi)容,很少會有人注意到springBoot中日志的配置,需要的朋友可以參考下
    2023-09-09

最新評論