開発ガイド
BaiZe Frameworkで開発を始めるための完全ガイド
2. Javaプロジェクト構造
1. Mavenマルチモジュール構造
BaiZe FrameworkはMavenマルチモジュール管理を採用しています。主なモジュールは以下の通りです:
baize-framework/
├── baize-base/ # ベースモジュール(共通コンポーネント、サポート機能)
└── baize-admin/ # 管理バックエンドモジュール(業務機能)
1.1 baize-base モジュール
パス:baize-backend/baiZe-base/
共通インフラストラクチャとツールクラスを提供します:
common/ - 共通コンポーネント
- code/ - エラーコード定義(ErrorCode、SystemErrorCode、UserErrorCode)
- domain/ - 共通ドメインオブジェクト(PageResult、ResponseDTO、RequestUser等)
- util/ - ツールクラス(Smartプレフィックスのツール群)
- swagger/ - Swagger/OpenAPI 設定とカスタマイズ
- validator/ - カスタムバリデータ
- enumeration/ - 列挙定義
- json/ - JSONシリアライズ設定
- annotation/ - カスタムアノテーション
- exception/ - 例外クラス(BusinessException)
- constant/ - 定数定義
config/ - 設定クラス
データベース、Redis、キャッシュ、Swagger、Token等の設定
handler/ - ハンドラー
- GlobalExceptionHandler - グローバル例外処理
- MybatisPlusFillHandler - MyBatis-Plus 自動充填
module/support/ - サポート機能モジュール
20以上のサブモジュールが含まれています:
- codegenerator/ - コード生成器
- redis/ - Redisカプセル化
- cache/ - キャッシュ管理
- file/ - ファイルアップロード
- securityprotect/ - セキュリティ保護
- datatracer/ - データトレース
- repeatsubmit/ - 重複送信防止
- captcha/ - キャプチャ
- message/ - メッセージ管理
- job/ - 定時タスク(SmartJob 自社開発)
- operatelog/ - 操作ログ
- loginlog/ - ログインログ
- dict/ - データ辞書
- helpdoc/ - ヘルプドキュメント
- feedback/ - フィードバック
- config/ - 設定管理
- heartbeat/ - ハートビート
- serialnumber/ - シリアル番号
- table/ - テーブル構造管理
- changelog/ - 変更ログ
- datamasking/ - データマスキング
- reload/ - ホットリロード
- mail/ - メール
- apiencrypt/ - API暗号化
1.2 baize-admin モジュール
パス:baize-backend/baiZe-admin/
業務管理モジュールで、baiZe-baseに依存しています:
module/system/ - システム管理モジュール
- employee/ - 従業員管理
- department/ - 部門管理
- role/ - ロール管理
- menu/ - メニュー管理
- position/ - 役職管理
- login/ - ログイン認証
- message/ - メッセージ管理
- datascope/ - データ権限
module/business/ - ビジネスモジュール
- category/ - カテゴリ管理
- goods/ - 商品管理
- oa/ - OA関連
2. レイヤアーキテクチャ
各業務モジュール(例:employee)は標準的なレイヤ構造を採用しています:
module/
├── controller/ - コントローラ層、HTTPリクエスト処理
├── service/ - サービス層、ビジネスロジック編成
├── manager/ - マネージャ層、ServiceImplを継承、複雑なビジネス・複数テーブル操作
├── dao/ - データアクセス層、BaseMapperを継承
└── domain/
├── entity/ - エンティティクラス、データベーステーブルに対応
├── form/ - フォームオブジェクト、リクエストパラメータ受信(AddForm、UpdateForm、QueryForm)
└── vo/ - ビューオブジェクト、レスポンスデータ返信
重要ポイント:
- dao層はMyBatis-PlusのBaseMapperを使用、@Mapperアノテーション使用
- manager層はServiceImpl<Dao, Entity>を継承、複数テーブル操作の複雑なビジネス処理用
- service層はmanagerとdaoを注入、ビジネスロジックを編成
- Mapper XMLファイルはsrc/main/resources/mapper/ディレクトリ配置
3. 技術スタック
- フレームワーク: Spring Boot 2.7.18
- Java: JDK 1.8
- ORM: MyBatis-Plus 3.5.12
- データベース: MySQL(P6SpyでSQL監視)
- キャッシュ: Redis + Caffeine
- 権限認証: Sa-Token 1.44.0
- APIドキュメント: Knife4j 4.5.0 + Springdoc OpenAPI
- タスクスケジューリング: SmartJob(自社開発定時タスク)
- ツールライブラリ: Hutool、Guava、Apache Commons
- Excel: FastExcel + POI
4. 設定ファイル
4.1 環境設定
プロジェクトはMaven Profileでマルチ環境設定を管理:
- dev/ - 開発環境(デフォルト)
- test/ - テスト環境
- pre/ - プレリリース環境
- prod/ - 本番環境
4.2 設定ファイル階層
- baiZe-base/src/main/resources/${profile}/baiZe-base.yaml - 基本設定(データベース、Redis、Sa-Token等)
- baiZe-admin/src/main/resources/${profile}/application.yaml - モジュール設定(ポート、ログ等)
- baiZe-base.yamlの設定を上書き可能
- YamlProcessorクラスで設定マージを実現
4.3 主要設定
- ポート: 1024(dev環境)
- データベース: P6Spyドライバ使用、SQLがログに出力
- ログディレクトリ: project.log-directory設定で指定
- ファイルアップロード: localとcloud(OSS)2モードサポート
- Swagger/Knife4j: デフォルト有効、/doc.htmlでアクセス
5. プロジェクトの依存関係
baiZe-base(ベースモジュール)
├── common/
├── config/
├── handler/
├── listener/
└── module/support/
├── codegenerator/ - コード生成
├── redis/
├── cache/
└── ...(20+のサポートモジュール)
baiZe-admin(管理バックエンド)
├── module/system/ - システム管理
│ ├── employee/ - 従業員管理
│ ├── department/ - 部門管理
│ ├── role/ - ロール管理
│ └── menu/ - メニュー管理
└── module/business/ - ビジネスモジュール
├── category/ - カテゴリ管理
├── goods/ - 商品管理
└── oa/ - OA関連
6. 起動エントリ
メインクラス:com.baize.admin.AdminApplication
特徴:
- スキャンパス:com.baize
- @MapperScanでMapperインターフェースをスキャン
- LogVariableListenerとIp2RegionListenerの2つのリスナーを登録
7. データベース規約
- MyBatis-Plus使用、エンティティクラスは@TableNameでテーブル名指定
- 主キーは@Id(type = IdType.AUTO)を統一使用
- 論理削除フィールド:deletedFlag(Boolean)
- 基本フィールド:createTime、updateTime、createUserId、updateUserId