コードの構造化
Spring Boot は、動作するために特定のコードレイアウトを必要としません。ただし、役立つベストプラクティスがいくつかあります。
ドメインに基づいた構造を強制したい場合は、Spring Modulith を参照してください。 |
「デフォルト」パッケージの使用
クラスに package
宣言が含まれていない場合、そのクラスは「デフォルトパッケージ」にあると見なされます。通常、「デフォルトパッケージ」の使用は推奨されておらず、避ける必要があります。すべての jar のすべてのクラスが読み取られるため、@ComponentScan
、@ConfigurationPropertiesScan
、@EntityScan
、@SpringBootApplication
アノテーションを使用する Spring Boot アプリケーションで特定の問題を引き起こす可能性があります。
Java の推奨パッケージ命名規則に従い、逆ドメイン名(たとえば、com.example.project )を使用することをお勧めします。 |
メインアプリケーションクラスの特定
通常、メインアプリケーションクラスを他のクラスの上にあるルートパッケージに配置することをお勧めします。@SpringBootApplication
アノテーションは多くの場合メインクラスに配置され、特定のアイテムのベース「検索パッケージ」を暗黙的に定義します。例: JPA アプリケーションを作成している場合、@SpringBootApplication
アノテーション付きクラスのパッケージを使用して @Entity
アイテムを検索します。ルートパッケージを使用すると、コンポーネントスキャンをプロジェクトにのみ適用することもできます。
@SpringBootApplication を使用したくない場合は、インポートする @EnableAutoConfiguration および @ComponentScan アノテーションがその動作を定義するため、代わりに使用することもできます。 |
次のリストは、典型的なレイアウトを示しています。
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
とともに 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)
}