コードの構造化
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)
}