コードの構造化

Spring Boot は、動作するために特定のコードレイアウトを必要としません。ただし、役立つベストプラクティスがいくつかあります。

ドメインに基づいた構造を強制したい場合は、Spring Modulith を参照してください。

「デフォルト」パッケージの使用

クラスに package 宣言が含まれていない場合、そのクラスは「デフォルトパッケージ」にあるとみなされます。「デフォルトパッケージ」の使用は一般的に推奨されておらず、避けるべきです。すべての jar のすべてのクラスが読み取られるため、@ComponentScan (Javadoc) @ConfigurationPropertiesScan (Javadoc) @EntityScan (Javadoc) 、または @SpringBootApplication (Javadoc) アノテーションを使用する Spring Boot アプリケーションでは特に問題が発生する可能性があります。

Java の推奨パッケージ命名規則に従い、逆ドメイン名(たとえば、com.example.project)を使用することをお勧めします。

メインアプリケーションクラスの特定

一般的に、メインアプリケーションクラスは、他のクラスの上にあるルートパッケージに配置することをお勧めします。@SpringBootApplication アノテーションはメインクラス上に置かれることが多く、特定の項目のベース「検索パッケージ」を暗黙的に定義します。たとえば、JPA アプリケーションを作成している場合、@SpringBootApplication (Javadoc) アノテーションクラスのパッケージを使用して @Entity (英語) 項目を検索します。ルートパッケージを使用すると、コンポーネントスキャンをプロジェクトにのみ適用することもできます。

@SpringBootApplication (Javadoc) を使用しない場合は、インポートされる @EnableAutoConfiguration (Javadoc) および @ComponentScan (Javadoc) アノテーションによってその動作が定義されるため、代わりに使用することもできます。

次のリストは、典型的なレイアウトを示しています。

com
 +- example
     +- myapplication
         +- MyApplication.java
         |
         +- customer
         |   +- Customer.java
         |   +- CustomerController.java
         |   +- CustomerService.java
         |   +- CustomerRepository.java
         |
         +- order
             +- Order.java
             +- OrderController.java
             +- OrderService.java
             +- OrderRepository.java

MyApplication.java ファイルでは、次のように、基本的な @SpringBootApplication (Javadoc) とともに main メソッドを宣言します。

  • Java

  • Kotlin

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApplication {

	public static void main(String[] args) {
		SpringApplication.run(MyApplication.class, args);
	}

}
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication

@SpringBootApplication
class MyApplication

fun main(args: Array<String>) {
	runApplication<MyApplication>(*args)
}