3.0.0バージョンアップデートの詳細:
プロジェクト構造の調整
-
プロジェクト名の変更:
オリジナルのオープンソースプロジェクト オープンソースプロジェクト 元メンバープロジェクト 現在のメンバープロジェクト 備考 zuihou-admin-boot ランプボート zuihou-boat-plus ランプ-ブート-プラス シングルバージョン zuihou-commons ランプユーティリティ zuihou-commons-more ランプ-util-plus ビジネスに依存しないツールセット zuihou-generator ランプジェネレーター zuihou-generator-plus ランプジェネレータープラス コードジェネレーター zuihou-ui ランプウェブ zuihou-ui ランプウェブプラス 舞台裏のテナント管理 zuihou-admin-ui ランプウェブ zuihou-admin-ui ランプウェブプラス 運用管理の背景(3.0以降:zuihou-uiとzuihou-admin-uiがlamp-webに統合されました) -
構成ファイルで構成されたログインアカウントとパスワードは、次のように変更されます。ランプ/ランプ
-
zuihou-uiとzuihou-admin-uiの機能がlamp-webに統合されました
-
lamp-j2cache-starterを破棄し、lamp-cache-staterを完全に使用します。
-
lamp-util(以前のzuihou-commons)プロジェクトは、システムで一般的に使用される注釈、モデル、列挙などを抽出するランプ注釈モジュールを追加し、マルチモジュールビジネスシステムの依存関係の結合を減らします
-
ジョブサービスは廃止され、バージョン3.0.1の独立したタイミングサービスは別のプロジェクトです。なぜそれは放棄されたのですか?
- xxl-jobのコード品質が低すぎて、大量のコードがコードスキャナーの仕様を満たしていません。!!
- タイミングサービススケジューラは、ビジネスとは関係のない独立したプロジェクトであり、ビジネスプロジェクトと一緒にまとめるべきではありません。
- 使用されているxxl-jobのバージョンが低すぎます。
データベース調整
- PDManを使用してテーブル構造を整理し、関係図を作成します
- create_user字段改成created_by、update_user改成updated_by
- 多数のテーブルのフィールドの名前を変更する
- データディクショナリテーブルのデータがリセットされます。c_common_dictionary+ c_common_dictionary_itemが1つのテーブルにマージされます:c_dictionary
- 状態フィールドには、ビジネス上の意味に従って名前が付けられます:状態、ステータス
- (非表示、表示)、(はい、いいえ)、(利用可能、利用不可)、(有効化、無効化)、その他のフィールドは状態を使用します
- OrderedStatus、ShippingStatus、ReceivedStatusなどのフィールドはステータスを使用します
- データベーステーブル名とテーブル構造は、仕様に従って完全に再構築されています
コードと機能の調整
- バージョンアップグレード:
spring.boot.version > 2.3.6.RELEASE spring-boot-admin.version > 2.3.1 knife4j.version -> 2.0.8 springfox.swagger.version -> 2.10.5 swagger-models.version -> 1.5.22 druid.version -> 1.2.3 mysql.version -> 8.0.22 mybatis.version -> 3.5.6 mybatis-spring.version -> 2.0.6 mybatisplus.version -> 3.4.1 transmittable-thread-local.version -> 2.12.0 fastjson.version > 1.2.75 transmittable-thread-local.version > 2.11.5 commons-io.version > 2.8.0 lombok.version > 1.18.16 hutool.version > 5.5.2 antisamy.version > 1.5.10 caffeine.version > 2.8.6 maven-source-plugin.version > 3.2.1 maven-javadoc-plugin.version > 3.2.0
- システム全体の@Autowiredインジェクションメソッドは破棄され、コンストラクタインジェクションに置き換えられます!
- SuperCacheServiceImplのデフォルトのキャッシュはCacheOpsを使用します。
- swagger自動構成は、
;
番号による複数のパッケージの構成をサポートします - FindBugsプラグインとAlibabaJavaコーディングガイドラインプラグインによってスキャンされたいくつかの問題コードを修正します
- PageParams#mapがPageParams#extraに変更されました
- 元のzuihou-log-starterモジュールであるcom.github.lamp.log.logback.zuihou-defaults.xmlの名前がcom.tangyh.basic.log.logback.defaults.xmlに変更されました。
- 元々My *という名前のクラスはLamp *に名前が変更されました
- 仕様に準拠していない抽象クラスやツールクラスなどのクラス名は、Aliスキャン仕様およびFindBugs仕様に従って再構築されます。
- デフォルトのデータベースID生成方法は、HUTOOLツールクラスに調整されます
- R getIsError()メソッドを削除し(フロントエンドはisErrorを使用して!isSuccessに変更されていることを確認します)、errorMsgを追加します(元のエラーメッセージを記録します)。
- 廃止されたCodeGenerate、AbstractDistributedLock、QueueConstantsクラス
- InjectionCore、ValidatorConfigurationを最適化する
- LampMetaObjectHandlerロジックの機能強化、エンティティインジェクションID、作成者、作成時間、変更者、基本クラスを継承しないエンティティの変更時間をサポート
- pomファイルで
<relativePath>../</relativePath>
調整されて<relativePath>../pom.xml</relativePath>
- 元のzuihou-msgsサービスに含ま
Msgs
れるすべてのパッケージ名とクラス名を次のように置き換えますMsg
- ユーザーテーブルに追加されたフィールド:salt、パスワードがsalt + sha256アルゴリズムに変更されました
- c_resource(以前のc_auth_resource)テーブルのリソースコードはレベル3に調整されます:service:function:operation point(authority:org:add、authority:org:updateなど)
- ビルトイン0000テナントは、4つのビルトインロールと5つのアカウントを追加します
- リソースコーディングとは
:*,;
、shiro実装サポートなどのワイルドカードを指します。コロンは権限の区切り文字として使用され、アスタリスクは任意の文字列に一致し、コンマは複数の権限を指定し、セミコロンは複数のコードの構成をサポートします。 - ログイン、ログアウト、およびキャッシュインターフェイスロジックを書き換えます
- メッセージセンターがすべてのユーザーを送信するときのバグを修正します
- データソースモードのテスト接続でデータソースリンクを閉じることができないバグを修正します
- データディクショナリテーブルが1つにマージされ、フロントエンドとバックエンドのコードが書き直されます
- ランプウェブの新しいオンラインユーザー機能ページ
- ランプウェブフロントエンドプロジェクトは、左側のメニューが同時に複数展開できるかどうかのグローバル構成をサポートします
- ランプウェブのVUE_APP_IS_MULTI_TENANTパラメータがVUE_APP_IS_MULTI_TENANT_TYPEに変更されました
- ランプウェブのe-icon-pickerコンポーネントはsvgアイコンをサポートします
- バックエンドは辞書クエリインターフェイス(
/dictionary/codes
)を調整して、フロントエンドが辞書データを取得するときに複数の属性を制御できるようにします。 - フロントエンドプロジェクトで大文字で名前が付けられたファイルは、最初は小文字に一律に変更されました
ランププロジェクト名の由来
ナラティブバージョン:
強風の暗い夜、子供たちは遊びに出かけようと叫んだので、子供たちを連れ出して風を吹き飛ばしまし程序员老婆
た。途中、プロジェクトの名前をどう変えるべきか話し合いました。思いついた名前が一つずつ拒否された後、みんなが落ち込んでしまいました。熟考。私が歩いていると、街灯の下で、子供は街灯をじっと見つめて静けさを壊し、叫びました:ランタン〜妻と私は唖然とし、お互いを見て一緒に言いました:ハハ、この名前はいいです〜
説明されたバージョン:
灯灯
:子供が話すことを学ぶときに最初に言う言葉です。また、多くのプロジェクト名を考えた後、子供が壊す名前でもありました。光は光を象徴しています。それは私たちに希望をもたらし、残業の夜を与えてくれます。帰ってきたプログラマーが道を案内します〜
灯灯
(略称ランプ、英語名:ランプ)、彼は以下のサブプロジェクトを含むプロジェクトの総称です。
ランププロジェクト構成
事業 | ジティー | github | 備考 |
---|---|---|---|
ツールセット | https://gitee.com/zuihou111/lamp-util | https://github.com/zuihou/lamp-util | ビジネスに依存しないツールセット、クラウドおよびブートプロジェクトはそれに依存しています |
マイクロサービスバージョン | https://gitee.com/zuihou111/lamp-cloud | https://github.com/zuihou/lamp-cloud | SpringCloud版 |
シングルバージョン | https://gitee.com/zuihou111/lamp-boot | https://github.com/zuihou/lamp-boot | SpringBootバージョン(基本的にランプクラウド機能と同じ) |
テナントの背景 | https://gitee.com/zuihou111/lamp-web | https://github.com/zuihou/lamp-web | PC管理システム |
コードジェネレーター | https://gitee.com/zuihou111/lamp-generator | https://github.com/zuihou/lamp-generator | 開発者向け |
タイミングスケジューラ | https://gitee.com/zuihou111/lamp-job | https://github.com/zuihou/lamp-job | まだ開発されていません |
ランプブーツ入門
lamp-boot
の前身はzuihou-admin-boot
、バージョン3.0.0以降、lamp-bootに名前が変更され、lamp
プロジェクトのメンバーの1つです。
lamp-cloud
SpringBoot(2.3.6.RELEASE)
単一の迅速な開発プラットフォームに 基づいて 、構成可能なSaaS機能は特に輝いており、RBAC機能、統合ゲートウェイ認証、Xssアンチクロスサイト攻撃、自動コード生成、複数のストレージシステム、分散トランザクション、分散タイミングタスクを備えています。複数のビジネスシステムの並列開発と複数のサービスの並列開発をサポートし、バックエンドサービスの開発スキャフォールドとして使用できます。コードは簡潔で、コメントは完全で、構造は明確です。基本的なフレームワークとして、学習や企業に非常に適しています。
コアテクノロジーは、SpringBoot、Mybatis、RabbitMQ、FastDFS / MinIO、およびその他の主要なフレームワークとミドルウェアを使用します。私たちは、からセットを構築するために努力したいと考えています JavaWeb基础框架
- 单体架构
- 持续集成
- 系统监测
ソリューション。本项目旨在实现基础能力,不涉及具体业务。
ランプテナントモードの概要
このプロジェクトは、構成を通じてプロジェクトのテナントモードを簡単に切り替えることができます 。
テナントモデル | 説明 | 利点 | 不利益 |
---|---|---|---|
NONE(非テナントモード) | テナントなし | シンプルで独立したシステムに適しています | テナントシステムの利点の欠如 |
COLUMN(フィールドモード) | テナントはデータベースを共有し、区別するためにビジネステーブルにフィールドを追加します | 知覚のないシンプルで複雑でない開発 | 不十分なデータ分離、不十分なセキュリティ、困難なデータのバックアップとリカバリ、 |
SCHEMA(独立したスキーマ) | 各テナントには独立したデータベース(スキーマ)があります。sqlを実行するときは、テーブル名の前にスキーマを動的に追加します。 | シンプルで、開発の認識がなく、優れたデータ分離 | データベースのルートアカウントは構成ファイルで構成する必要があり、複雑なSQLおよびSQLネストされたカスタム関数はサポートされていません |
DATASOURCE(独立したデータソース) | 各テナントには独立したデータベース(データソース)があり、コードの実行時にデータソースが動的に切り替えられます | データベースは独立して展開でき、優れたデータ分離、高いスケーラビリティ、および障害への影響が少ない | 比較的複雑な開発では、データソースを切り替えるときにトランザクションの問題に注意を払う必要があり、より多くのデータベースが必要になります |
ランプメンバーバージョンプロジェクトデモアドレス
- 住所:http://tangyh.top:10000 / lamp-web /
- 以下のビルトインアカウントは、ビルトイン0000テナントに限定されています
- プラットフォーム管理者:lamp_pt / lamp(社内の運用スタッフ用に組み込まれています)
- スーパーアドミニストレーター:ランプ/ランプ
- 一般管理者:一般/ランプ
- 通常のアカウント:通常/ランプ
ps:デモ環境の組み込みテナントには書き込み権限がありません。デモ環境での追加、削除、変更をテストする場合は、lamp_ptアカウントを使用してテナント管理者アカウントにクエリを実行し、新しいテナントにログインしてテストしてください。
ランプブートプロジェクトのハイライト:
-
サービス認証: 内部サービスのセキュリティを確保するために、JWTを介したサービス間のスケジューリングの認証検証を強化します。
-
モニター:
Spring Boot Adminを使用して、独立した各サービスの実行ステータスを監視します。turbineを使用して、インターフェイスの実行ステータスと呼び出し頻度をリアルタイムで表示します。Zipkinを使用して、各サービス間のコールチェーンを表示します。
-
データ許可
Mybatisに基づくDataScopeInnerInterceptorインターセプターは、データ許可機能を実現するために使用されます
-
SaaS(マルチテナント)ナンセンスソリューション
このプロジェクトは、3つの一般的なテナントソリューションをサポートし、テナントソリューションはサポートしていません。同じコードセットを使用して、1つの構成を変更し、テナントモードのみの切り替えを実現できます。
-
キャッシュの抽象化
CacheOpsは、CaffeineとRedisの2つの組み込み実装を使用してキャッシュを操作するために使用されます。これにより、Redisがなくても緊急時にプロジェクトを正常に実行できます。
-
エレガントな豆の変換
Dozer、BeanUtil、およびその他のコンポーネントを使用して、DTO、DO、PO、およびその他のオブジェクトの変換を最適化します
-
統合されたフロントエンドとバックエンドのフォーム検証
厳密なフォーム検証では通常、フロントエンドとバックエンドの両方の検証が必要ですが、従来のプロジェクトでは、フロントエンドとバックエンドごとに1回しかテストできません。ルールを変更した後、フロントエンドとバックエンドを同時に変更する必要があります。したがって
hibernate-validator
、lamp-validator-starter
初期依存関係はに基づいてカプセル化され、フォームの検証に必要なルールを取得するための一般的なインターフェイスが提供され、フロントエンドはバックエンドから返されたルールを使用します。ルールが将来変更された場合は、バックエンドのみを変更する必要があります。 -
アンチクロスサイトスクリプティング(XSS)
- フィルタを使用して、すべてのリクエストのフォームパラメータをフィルタリングします
- Jsonデシリアライザーを使用してすべてのアプリケーション/ jsonタイプのパラメーターをフィルタリングします
-
現在ログインしているユーザー情報インジェクター
- 注釈によるユーザーIDの挿入
-
オンラインAPI
ネイティブswagger-uiの一部の機能は十分に友好的ではないため、国内のオープンソースが採用され
knife4j
、springbootユーザーの使用を容易にするためにステータスが作成されます。 -
コードジェネレーター
コードジェネレーターのセットは、Mybatis-plus-generatorに基づいてカスタマイズされます。データベースフィールドのアノテーションを構成することにより、列挙クラス、データディクショナリアノテーション、SaveDTO、UpdateDTO、フォーム検証ルールアノテーション、Swaggerアノテーションなどを自動的に生成します。
-
時限タスクスケジューラ
-
大きなファイル/ブレークポイント/スライス再開
フロントエンドはwebupload.jsを使用し、バックエンドはNIOを使用して、大きなファイルブレークポイントと断片化された再開を実現します。Eureka、Zuul、およびFileサービスを開始した後、docs / chunkUploadDemo /demo.htmlを直接開いてテストします。テスト後、ローカルリミットスタックの最大メモリ128Mがファイルサービスを開始し、4.6G +の大きなファイルを5分以内に正常にアップロードできます。正式なサービス時間はユーザー帯域幅とサーバー帯域幅の影響を受け、時間が比較的長くなります。
-
クロステーブル、クロスデータベース、およびクロスサービス関連のデータ自動インジェクター
これは、テーブル間、データベース間、およびサービス間ページングデータ属性、または関連データをエコーする単一オブジェクトの属性の問題を解決するために使用され、静的データ属性(データディクショナリ)と動的プライマリキーデータの自動挿入をサポートします。
ランプブートテクノロジースタック/バージョンの紹介:
- 関連するテクノロジーは次のとおりです。
- JSONシリアル化:ジャクソン
- メッセージキュー:RabbitMQ
- キャッシュ:Redis
- データベース:MySQL5.7.9またはMySQL8.0.19
- タイマー
- フロントエンド:vue + element-ui
- 永続性レイヤーフレームワーク:Mybatis-plus
- コードジェネレーター:Mybatis-plus-generatorに基づいてカスタマイズ
- プロジェクトの構築:Maven
- 監視:spring-boot-admin
- ファイルサーバー:FastDFS 5.0.5 / Alibaba Cloud OSS / local storage / MinIO
- Nginx
- 展開の側面:
- サーバー:CentOS
- ジェンキンス
- Docker
- 知事
プロジェクトのスクリーンショット:
プレビュー | プレビュー |
---|---|