スプリングフレーム集成flywayプロジェクトの詳細過程


Springとは何ですか
SpringはRod John sonによって作成されたオープンソースフレームです。企業の応用開発の複雑さを解決するために作られました。
   Springは基本的なJavaBeanを使って、これまでEJBでしかできなかったことを完成させます。
  ただし、Springの用途はサーバ端の開発に限られない。単純性、試験可能性、および松結合の観点から、JavaアプリケーションはいずれもSpringから恩恵を受けることができる。
   目的:企業の応用開発の複雑さを解決する。
   機能:基本的なJavaBeanを使ってEJBの代わりに、より多くの企業応用機能を提供しています。
   範囲:任意のJavaアプリケーション
   これはJavabean(javaオブジェクト)を取り付けるための容器フレームであり、中間層フレーム(万能ゴム)は、Strutsとhibernaneを接着して運用するなどの接続機能を果たすことができる。簡単に言えば、Springは軽量級の制御反転(IoC)と断面(AOP)向けの容器フレームである。
Flyway概要
Flywayはデータベースバージョン管理ツールで、SQLスクリプトによりDB Migrationの自動化アップグレードを実現し、独立運行をサポートし、ツールやSpring開発環境と統合することもできます。
最近会社のプロジェクトにflywayを集めました。私達のプロジェクトのモバイル端末はspringフレームを使っていますので、ネットでたくさんのブログを見ました。この方面のものはまだ少ないと思います。結局今はspringbootの天下です。多くはspringboot集成flywayです。しかし、多くの会社がspringの枠組みを残しているプロジェクトがあります。ここは自分の肝臓の一編です。もっと多くのflywayをspringプロジェクトに追加したい人を助けたいです。
スプリングフレームを使用しています。したがって、私たちは低バージョンのflywayを選択します。
flyway各バージョンはここで探してください。https://mvnrepository.com/artifact/org.flywaydb/flyway-core
私たちのmavenはアリ雲の倉庫を使っています。アリ雲倉庫には低いバージョンの依存がありません。私たちはjarカバンをダウンロードしたいです。ここでダウンロードしたのは3.0バージョンのjarパッケージです。
ダウンロードしたカバンはプロジェクトwebapp/WEB-INF/libにコピーする必要があります(webプロジェクトにはWEB-INFというフォルダがあります。あなたのプロジェクトのwebフォルダを見つけたらいいです。webフォルダとは、フォルダに青い点があります。具体的には下の図のwebappフォルダを見てください。)

新規リソースディレクトリ
その下にdb/migrationを作成します。(sqlファイルはデフォルトでこのパスを読み込むフォルダの中の.sqlファイル)

pom.xmlに追加し、追加しないと、resourceのファイルはwarパッケージに包装できません。

 <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*</include>
                </includes>
    </resource>
flywayの配置類を追加します。もっと多い配置はソースコードを見てください。

package com.dt.flyway;


import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.flywaydb.core.Flyway;
import org.flywaydb.core.api.FlywayException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;


/**
 * @Description: flyway   
 * @author: 
 * @Date: 2021/7/12 15:57
 * @Copyright: Xi'an Dian Tong Software Co., Ltd. All Rights Reserved.
 * @Version 1.0
 */
public class DatabaseFlywayMigration {
    protected final static Logger log = LogManager.getLogger("DatabaseFlywayMigration");

    public void migrate() throws NamingException {
        log.info("DatabaseFlywayMigration-->migrate:flyway    ,       ");
        Context context = new InitialContext();
        //  tomcat     
        DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/wxi");
        log.info("DatabaseFlywayMigration-->migrate:       ,    flyway  ");
        Flyway flyway = new Flyway();
        //   sql       
        flyway.setEncoding("UTF-8");
        flyway.setOutOfOrder(true);
        flyway.setDataSource(dataSource);
        //     flyway            
        //flyway.setSchemas("flywaydemo");
        //     flyway metadata     
         flyway.setTable("flyway_schema_history");
        //     migrate     validation  
        //flyway.setValidationMode(ValidationMode.ALL);
        //    validation        
        //flyway.setValidationErrorMode(ValidationErrorMode.FAIL);

        //    validation        
        try {
            flyway.setInitOnMigrate(true);
            log.info("DatabaseFlywayMigration-->migrate:    ,    sql  ");
            flyway.migrate();
            log.info("DatabaseFlywayMigration-->migrate:sql      ,flyway---END");
        } catch (FlywayException e) {
            log.error("DatabaseFlywayMigration-->migrate:  sql    ,         ");
            flyway.repair();
            e.printStackTrace();
        }
    }
}
springのxmlにflywayの配置類を注入するbean(各spring項目には1つのxmlファイルがあり、beanを登録するために使用され、コピーする時に注意する項目の中でDatabaseFlywayMigrationがある経路)

<!-- flayway -->
<bean id="flywayMigration1" class="com.dt.flyway.DatabaseFlywayMigration" lazy-init="false" init-method="migrate"> </bean>

ここに来て、モバイル端末がflywayを統合したら完成です。
今後これらのsql文は、resource/db/migrationフォルダの下に置くだけでいいです(ただし、これらのsqlの名前はflywayに合わないので、名前の修正が必要です)

名前のルール:
ここのSQL文の名前は一定の規範に従う必要があります。さもなければ運行時にflywayはエラーを報告します。命名規則は主に二つあります。
一回実行されるSQLだけを大文字の「V」と命名し、後から「0~9」の数字の組み合わせをフォローします。数字の間に「.」または下線「分割」を使って、二つの下線を引いてください。分割し、その後はファイル名と、最後は.sqlで終了します。例えば、V 202010707__uクリアードuser.sql、V 2010707_uadd_アメリカ。
繰り返し実行可能なSQLは、大文字の「R」で始まり、後は2つの下線で分割され、その後はファイル名となり、最後は.sqlで終了します。例えば、R_u utruncate_アメリカ.dml.sql。
ここで、V先頭のSQLは、R先頭のSQLより優先度が高い。
V:固定大文字
2010707.01:202910707は日付で、後は.01は番号を表します。
flywayの実行には順番がありますので、例えば、V 2021_u 0026 quot;を実行しました。クリアードアメリカは、V 2020_を実行しています。udate_user2020<2021>がエラーとなります。ですから、順番が順次増えることを保証します。
Flywayはどのように二つのSQLファイルの先着順を比較しますか?左揃えの原則を採用しています。空白は0で代用します。いくつかの例を挙げます
1.0.1.1は1.0.1バージョンより高いです。
1.0.10は1.0.94より高いです。
1.0.10と1.0.010バージョン番号は同じ高さで、各バージョン番号部分のプリアンブル0は無視されます。
ウ_:これは二つの_です
たとえば:
V 2.0.9_uugrade.sql
V 2.0.11__ugrade.sql
V 2.0.13__ugrade.sql
V 2.0.14__ugrade.sql
天下には有料のバスがありません。出典:https://www.cnblogs.com/LoveBB/本著作権は著者とブログパークに共有され、転載を歓迎するが、作者の同意なしに文章のページに原文のリンクを与えなければならない。そうでなければ法律責任を追及する権利を保留する。
ここで、スプリングインテグレーションflywayについての文章を紹介します。もっと関連するspringインテグレーションflywayの内容を紹介します。以前の文章を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。