アプローチに関するコメント

Spring チームは、新しいプロジェクトを作成する 2 つの方法と、既存のプロジェクトを変更する 1 つの方法を作成しました。最適なアプローチは、Spring Initializr を使用してプロジェクトを生成し、その後 boot add コマンドを使用してそれに追加することであることがわかりました。次のセクションでは、それが最適なアプローチである理由を説明します。

Initializr

新しい Spring Boot プロジェクトを作成する一般的な方法は、start.spring.io で Initializr を使用することでした。Spring CLI は、Initializr と対話するためのコマンドを提供します。Initializr を参照してください。また、新しいプロジェクトを作成するための他のアプローチも提供し、既存のプロジェクトにコードまたは構成を追加する day-2 のユースケースに対応します。

新規 Boot の使用

boot new コマンドを使用すると、ソースコードリポジトリにある既存のプロジェクトから新しいプロジェクトを作成できます。boot new コマンドを使用すると、ニーズに合わせてカスタマイズするための小さなオプションセット (パッケージ名の変更など) を指定できますが、Initializr で取得する依存関係の選択は提供されません。

boot new のアプローチは、プロジェクトの依存関係に加えて、完全に機能するコードと構成を含む既存のリポジトリのクローンを作成することです。このアプローチにより、プロジェクトアーキ型はソースコードリポジトリ内の通常の Spring プロジェクトであり、CI プロセスで動作することが検証できるため、ユーザーまたはチームのメンバーは複数のプロジェクトアーキ型を簡単に作成できます。詳細については、"新規プロジェクトの作成" を参照してください。

Boot 追加の使用

その後、最初のプロジェクトを作成した後、boot add コマンドを使用して、必要に応じて追加のコードと依存関係を追加できます。このコマンドは、既存のプロジェクトを現在のプロジェクトにインテリジェントにマージします。boot new コマンドと同様に、既存のプロジェクトはソースコードリポジトリ内の通常の Spring プロジェクトであり、CI プロセスで動作するようにコンパイルおよび検証できます。詳細については、"「Boot 追加」のご案内" を参照してください。

テンプレートコードと構成

あるいは、テンプレートエンジンを使用してコードと構成を作成するユーザー定義コマンドを使用して、追加のコードと依存関係を追加することもできます。詳細については、"ユーザー定義コマンドのガイド" を参照してください。テンプレートエンジンを使用し、ユーザーがこれらのテンプレートを呼び出すコマンドを簡単に提供できるようにするアプローチは、hygen [GitHub] (英語) プロジェクトからインスピレーションを得たものです。

結論

追加のコードと依存関係を追加するどちらのアプローチにもそれぞれ使用例がありますが、新しいプロジェクトを最初から作成する場合は、動作中のプロジェクトから開始する方が簡単であることがわかりました。会社が必要とする承認済みの依存関係を入手できるだけでなく、コード、構成、テストも入手できます。これは、依存関係を選択してチュートリアルからコードをコピーするという多忙な作業と不確実性を取り除く出発点です。多くの場合、これらのチュートリアルは非常に基本的なため、一般的なベストプラクティスの規則に従っておらず、テストもありません。

テンプレートを使用して新しいプロジェクトを作成するのは難しい場合があります。私たちの意見では、新しいプロジェクト用に Java コードをテンプレート化することは、既存の作業プロジェクトから新しいプロジェクトを複製するよりも困難です。テンプレートの作成、テンプレートの実行、生成されたプロジェクトのコンパイルというサイクルは不安定です。ただし、より小さなコードブロックと構成を作成する方が、テンプレートアプローチに適していることがわかりました。たとえば、spring controller new を使用して現在のプロジェクトにコントローラーを追加したり、spring feature new を使用して @Controller@Service@Repository のアノテーションが付けられたクラスなどのいくつかのファイルを追加したりします。

エクスペリエンスは異なる場合がありますが、Spring CLI では両方の型のコード生成を使用できます。