출처: https://docs.spring.io/spring-boot/4.0-SNAPSHOT/reference/using/structuring-your-code.html
이 버전은 아직 개발 중이며 안정적이지 않습니다. 최신 안정 버전은 Spring Boot 3.5.6을 사용하세요!
Structuring Your Code
Spring Boot는 작동하기 위해 특정 코드 레이아웃을 요구하지 않습니다.
그러나 도움이 되는 몇 가지 모범 사례가 있습니다.
도메인 기반 구조를 적용하고 싶다면 Spring Modulith를 살펴보세요.
Using the "default" Package
클래스에 package 선언이 포함되어 있지 않으면 "default package"에 있는 것으로 간주됩니다.
"default package"의 사용은 일반적으로 권장되지 않으며 피해야 합니다.@ComponentScan, @ConfigurationPropertiesScan, @EntityScan 또는 @SpringBootApplication 어노테이션을 사용하는 Spring Boot 애플리케이션의 경우 모든 jar의 모든 클래스를 읽기 때문에 특정 문제가 발생할 수 있습니다.
Java의 권장 패키지 명명 규칙을 따르고 역방향 도메인 이름(예: com.example.project)을 사용하는 것이 좋습니다.
Locating the Main Application Class
일반적으로 메인 애플리케이션 클래스를 다른 클래스보다 위의 루트 패키지에 배치하는 것이 좋습니다.
@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
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);
}
}
Kotlin
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
@SpringBootApplication
class MyApplication
fun main(args: Array<String>) {
runApplication<MyApplication>(*args)
}
