日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

springboot 啟動時初始化數據庫的步驟

瀏覽:27日期:2023-03-31 11:45:32
問題描述

在spring-boot啟動時,希望能執行相應的sql文件來初始化數據庫。

使用配置文件初始化數據庫

可以在spring-boot的配置文件application.yml中設置要初始化的sql文件。這是最簡單的方法,只需要添加屬性就可以實現。

首先設置spring.datasource.initialization-mode=always表示任何類型數據庫都進行數據庫初始化,默認情況下,spring-boot會自動加載data.sql或data-${platform}.sql文件來初始化數據庫。可以通過設置不同的數據庫平臺來改變啟動的腳本名稱。

例如設置spring.datasource.platform=mysql,就會加載data-mysql.sql的數據庫腳本。把數據庫腳本文件放在resources路徑下即可。

如果項目使用的是flyway管理數據庫的話,可以直接在flyway路徑下添加一個新版本的sql文件,flyway也會自動執行sql文件并記錄版本信息。

通過代碼初始化數據庫

如果通過配置文件不能滿足需求,可以通過代碼來初始化數據庫。只需要提供DataSourceInitializer這個bean,spring-boot啟動時就會根據DataSourceInitializer來初始化數據庫了。

@Beanpublic DataSourceInitializer dataSourceInitializer(final DataSource dataSource) { ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator(); resourceDatabasePopulator.addScript(new ClassPathResource('/data.sql')); DataSourceInitializer dataSourceInitializer = new DataSourceInitializer(); dataSourceInitializer.setDataSource(dataSource); dataSourceInitializer.setDatabasePopulator(resourceDatabasePopulator); return dataSourceInitializer;}

在此基礎上,我們可以自定義注解,通過獲取注解上的sql文件路徑,來達到通過注解初始化數據庫目的,這樣更方便簡潔。首先定義注解InitDataSource:

/** * 用于補充:Hibernate無法自動創建視圖的缺陷。 * 系統啟動時(hibernate根據entity創建完基本的數據表后),開始執行本注解下的sql文件中的SQL語言。 * 使用方法: * @InitDataSource('sql文件路徑(相對于resources路徑下)') ---- 注解到對應的類上 * 比如:@InitDataSource('db/view/createView.sql)') * 使用示例請參見:ResourceApplication.java * 預了解詳細的實現過程請參考:WebConfig.java 的 dataSourceInitializer方法 * @author huangtingxiang */@Target({ElementType.TYPE}) // 該注解用于類上 @Retention(RetentionPolicy.RUNTIME) // 在運行時起作用 @Component public @interface InitDataSource { String[] value(); }

然后通過ClassPathScanningCandidateComponentProvider這個類來掃描spring組件上InitDataSource注解的值,將值取出,添加到DataSourceInitializer的初始化腳本中:

@Bean public DataSourceInitializer dataSourceInitializer(final DataSource dataSource) { ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator(); // 掃描com.mengyunzhi.measurement 包 找到InitDataSource注解的類(注解需使用到實現類上) ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false); provider.addIncludeFilter(new AnnotationTypeFilter(InitDataSource.class)); //添加包含的過濾信息 for (BeanDefinition beanDef : provider.findCandidateComponents('com.mengyunzhi.measurement')) { Class<?> cl = null; try { cl = Class.forName(beanDef.getBeanClassName()); InitDataSource initDataSource = cl.getAnnotation(InitDataSource.class); String[] sqlFiles = initDataSource.value(); for (String sql: sqlFiles) { // 如果sql文件存在 加入數據庫初始化中 否則拋出異常終止執行 ClassPathResource resource = new ClassPathResource('/' + sql); if (resource.exists()) { resourceDatabasePopulator.addScript(resource); } else { throw new DataSourceInitializerException('未找到資源文件:' + sql, cl); } } } catch (ClassNotFoundException e) { e.printStackTrace(); } } DataSourceInitializer dataSourceInitializer = new DataSourceInitializer(); dataSourceInitializer.setDataSource(dataSource); dataSourceInitializer.setDatabasePopulator(resourceDatabasePopulator); return dataSourceInitializer; }

這樣一來,只需要在spring-boot類上使用@InitDataSource({'data.sql'})注解,就可以自動進行數據庫的初始化操作了。

以上就是springboot 啟動時初始化數據庫的步驟的詳細內容,更多關于springboot 初始化數據庫的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲成av人片一区二区密柚| 成人一区而且| 久久免费高清| 成人国产精品| 精品伊人久久| 午夜影院一区| 婷婷激情久久| 五月天综合网站| 国产精品人人爽人人做我的可爱| 激情综合网站| 老牛影视一区二区三区| 丝袜美腿亚洲一区| 天堂av一区| 国产精品丝袜在线播放| 精品一区二区三区在线观看视频| 日韩1区2区日韩1区2区| 久久国内精品自在自线400部| 欧美天堂在线| 精品一区二区三区在线观看视频| 日韩一区自拍| 亚洲深夜影院| 欧美日韩亚洲一区| 精品一区二区三区中文字幕 | 亚洲精品看片| 日韩精品亚洲专区| 久久久久观看| 亚洲91久久| 亚洲开心激情| 久久国产免费看| 欧美xxxx中国| 91九色精品国产一区二区| 亚洲永久字幕| 国产美女亚洲精品7777| jizzjizz中国精品麻豆| 久久影视一区| 色欧美自拍视频| 97人人精品| 一区二区国产在线| 91日韩免费| 在线天堂中文资源最新版| 黄色日韩精品| 久久不卡国产精品一区二区| 狠狠色综合网| 国产乱人伦精品一区| 久久亚洲风情| 欧美日韩激情| 97精品资源在线观看| 日本精品黄色| 久久成人精品| 麻豆91在线播放| 尹人成人综合网| 国产精品极品| 婷婷精品进入| 国产精品乱战久久久| 欧美99久久| 欧美日本久久| 欧美jjzz| 麻豆精品少妇| 激情综合网站| 鲁大师精品99久久久| 亚洲天堂成人| 国产精品白丝久久av网站| 欧美成人久久| 精品一区视频| 日韩三级久久| 久久精品免费一区二区三区| 日韩精品视频网站| 99久久精品费精品国产| 7m精品国产导航在线| 91精品国产自产在线观看永久∴| 日韩激情av在线| 久久久精品网| 国产精品激情| 蜜芽一区二区三区| 欧美国产美女| 欧美天堂一区| 噜噜噜躁狠狠躁狠狠精品视频| 精品美女在线视频| 日韩区欧美区| 黄色av日韩| 精品久久久久久久| 日本不卡一二三区黄网| 999精品一区| 精品国产一区二区三区噜噜噜| 亚洲视频二区| jiujiure精品视频播放| 国产在线不卡一区二区三区| 日韩精品免费观看视频| 日韩在线综合| 国产精品亲子伦av一区二区三区 | 亚洲女同一区| 日韩成人免费| 免费视频一区二区三区在线观看| 日韩中出av| 午夜在线一区| 激情综合网址| 日韩中文视频| 在线天堂中文资源最新版| 美女性感视频久久| 国产精品亚洲综合久久| 亚洲tv在线| 亚洲综合精品四区| 国精品一区二区| 99久久99视频只有精品 | 精品一区二区三区亚洲| 日韩精品三区四区| 亚洲欧洲日韩精品在线| 99re国产精品| 午夜欧美精品| 黄色av日韩| 国产亚洲毛片| 国产视频一区欧美| 亚洲一区二区三区四区五区午夜 | 国产欧美另类| 日韩高清国产一区在线| 另类国产ts人妖高潮视频| av亚洲免费| 99国产精品| 欧美在线综合| 在线精品一区二区| 蜜臀va亚洲va欧美va天堂| 丝袜亚洲精品中文字幕一区| 蜜桃视频在线观看一区| 综合色就爱涩涩涩综合婷婷| 亚洲精品精选| 日韩激情啪啪| 欧美亚洲免费| 午夜久久av | 欧美国产另类| 福利一区二区免费视频| 欧美激情国产在线| 成人精品亚洲| 免费视频国产一区| 99riav1国产精品视频| 亚洲深深色噜噜狠狠爱网站 | 亚洲一级在线| 亚洲精品少妇| 欧美日韩亚洲一区在线观看| 免费观看亚洲天堂| 久久久久久一区二区| 99久久久久| 久久av一区二区三区| 日韩欧美中文在线观看| 国产伦理一区| 国产在线不卡一区二区三区| 日韩精品首页| 免费人成黄页网站在线一区二区| 日韩欧美中文字幕在线视频| 毛片不卡一区二区| 成人福利视频| japanese国产精品| 日本不卡视频在线观看| 老司机免费视频一区二区| 91看片一区| 久久亚洲国产精品一区二区| 91精品视频一区二区| 成人在线观看免费视频| 欧美va天堂在线| 日韩国产高清在线| 国产a亚洲精品| 亚洲性视频h| 日本亚洲视频在线| 精品一区二区三区在线观看视频 | 日韩精品亚洲专区| 欧美激情另类| 另类国产ts人妖高潮视频| 国产精品一区免费在线| 日韩欧美二区| 亚洲视频二区| 久久久久久婷| 久久国产精品毛片| 久久精品国产99国产精品| 成人av动漫在线观看| 国产亚洲精品美女久久久久久久久久| 精品久久97| 精品1区2区3区4区| 久久国产婷婷国产香蕉| 久久国产中文字幕| 日日夜夜免费精品视频| 国产成人调教视频在线观看| 亚洲一区不卡| 精品91福利视频| 中文字幕一区日韩精品| 国产精品高颜值在线观看| 丝袜诱惑制服诱惑色一区在线观看| 你懂的网址国产 欧美| 亚洲激情中文| 美女视频黄久久| 日韩在线观看一区二区| www.九色在线| 日精品一区二区三区| 日韩精品首页| 国产精品欧美一区二区三区不卡| 欧美/亚洲一区| 精品一区二区三区的国产在线观看| 日韩中文字幕91| 日韩高清欧美| 国产亚洲高清在线观看| 午夜久久免费观看| 国产一区二区三区探花|