SpringBootプロジェクトの推奨パッケージ構造
1. 概要
新しいSpring Bootプロジェクトを構築する場合、クラスの編成方法に高い柔軟性があります。
それでも、覚えておく必要のあるいくつかの推奨事項があります。
2. デフォルトパッケージなし
@ComponentScan 、 @ EntityScan、@ ConfigurationPropertiesScan 、 @ Spring BootApplication などのSpring Bootアノテーションは、パッケージを使用してスキャン場所を定義することをお勧めします。デフォルトのパッケージを使用しないようにします。つまり、常にクラスでパッケージを宣言する必要があります。
3. メインクラス
@SpringBootApplication アノテーションは、現在のパッケージとそのサブパッケージのコンポーネントスキャンをトリガーします。 したがって、確実な方法は、プロジェクトのメインクラスを基本パッケージに常駐させることです。
これは構成可能であり、基本パッケージを手動で指定することにより、他の場所に配置することもできます。 ただし、ほとんどの場合、このオプションは確かに簡単です。
さらに、JPAベースのプロジェクトでは、メインクラスにいくつかの追加のアノテーションを付ける必要があります。
@SpringBootApplication(scanBasePackages = "example.baeldung.com")
@EnableJpaRepositories("example.baeldung.com")
@EntityScan("example.baeldung.com")
また、追加の構成が必要になる場合があることに注意してください。
4. デザイン
パッケージ構造の設計は、SpringBootとは無関係です。 したがって、それは私たちのプロジェクトの要件によって課されるべきです。
人気のある戦略の1つは、パッケージごとの戦略です。これにより、モジュール性が強化され、サブパッケージ内のパッケージとプライベートの可視性が可能になります。
たとえば、PetClinicプロジェクトを考えてみましょう。 このプロジェクトは、一般的なSpringBootプロジェクトをどのように構成するかについての彼らの見解を説明するためにSpring開発者によって作成されました。
これは、機能ごとにパッケージ化されています。 したがって、メインパッケージorg.springframework.samples.petclinicと5つのサブパッケージがあります。
- org.springframework.samples.petclinic。model
- org.springframework.samples.petclinic。owner
- org.springframework.samples.petclinic。system
- org.springframework.samples.petclinic。vet
- org.springframework.samples.petclinic。visit
それらのそれぞれは、アプリケーションのドメインまたは機能を表し、内部で高度に結合されたクラスをグループ化し、高い凝集度を可能にします。
5. 結論
この小さな記事では、Spring Bootプロジェクトを構築する際に留意する必要のあるいくつかの推奨事項を確認し、パッケージ構造を設計する方法について学びました。