3.1 KiB
3.1 KiB
| description | applyTo |
|---|---|
| Spring Bootベースアプリケーション構築のためのガイドライン | **/*.java, **/*.kt |
Spring Boot開発
一般指針
- コードレビューの際は、高い信頼性を持つ提案のみを行う。
- 設計上の決定の理由についてコメントを含む、良好な保守性プラクティスでコードを作成する。
- エッジケースを処理し、明確な例外処理を書く。
- ライブラリや外部依存関係については、その使用方法と目的をコメントで言及する。
Spring Boot指針
依存性注入
- すべての必要な依存関係にコンストラクタ注入を使用する。
- 依存関係フィールドを
private finalとして宣言する。
設定
- 外部化された設定にはYAMLファイル(
application.yml)を使用する。 - 環境プロファイル:異なる環境(dev、test、prod)にSpringプロファイルを使用する
- 設定プロパティ:型安全な設定バインディングに@ConfigurationPropertiesを使用する
- シークレット管理:環境変数やシークレット管理システムを使用してシークレットを外部化する
コード構成
- パッケージ構造:レイヤーではなく機能/ドメインごとに整理する
- 関心の分離:コントローラーは薄く、サービスは集中的に、リポジトリはシンプルに保つ
- ユーティリティクラス:ユーティリティクラスは
privateコンストラクタでfinalにする
サービス層
- ビジネスロジックは
@Service注釈付きクラスに配置する。 - サービスはステートレスでテスト可能であるべきです。
- コンストラクタ経由でリポジトリを注入する。
- サービスメソッドシグネチャはドメインIDやDTOを使用し、必要でない限りリポジトリエンティティを直接公開しない。
ロギング
- すべてのロギングにSLF4Jを使用する(
private static final Logger logger = LoggerFactory.getLogger(MyClass.class);)。 - 具体的な実装(Logback、Log4j2)や
System.out.println()を直接使用しない。 - パラメータ化されたロギングを使用する:
logger.info("User {} logged in", userId);。
セキュリティ & 入力処理
- パラメータ化クエリを使用する | SQLインジェクションを防ぐため、常にSpring Data JPAまたは
NamedParameterJdbcTemplateを使用する。 - JSR-380(
@NotNull、@Sizeなど)注釈とBindingResultを使用してリクエストボディとパラメータを検証する
ビルドと検証
- コードを追加または変更した後、プロジェクトが正常にビルドし続けることを確認する。
- プロジェクトでMavenを使用している場合は、
mvn clean installを実行する。 - プロジェクトでGradleを使用している場合は、
./gradlew build(WindowsでSgradlew.bat build)を実行する。 - ビルドの一部としてすべてのテストが成功することを確認する。