728x90
개요
Spring Modulith를 사용하면 잘 구주화된 Spring boot 애플리케이션을 구축할 수 있고, 도메인 기반의 애플리케이션 모듈을 찾고 작업할 수 있도록 가이드 해준다.
DDD를 위한 구조적인 코드 검증 및 문서화.
모듈식 모놀리스 아키텍처는 단순성과 유지관리 용이성의 장점.
Spring Boot Structuring Code
Spring Boot does not require any specific code layout to work. However, there ar some best practices that help.
If you wich to enforce a structure based on domains, take a look at Spring Modulith. |
Locating the Main Appcation Class
애플리케이션 클래스는 다른 클래스 위의 루트 패키지에 배치하는 것을 추천한다.
예제에서도 도메인 가반으로 패키지를 분리하도록 되어있습니다.
com
+- example
+- myapplication
+- MyApplication.java
|
+- customer
| +- Customer.java
| +- CustomerController.java
| +- CustomerService.java
| +- CustomerRepository.java
|
+- order
+- Order.java
+- OrderController.java
+- OrderService.java
+- OrderRepository.java
Spring-petclinic Example
스프링 petclinic 예제에서도 도메인 기반으로 패키지를 분리되어있다.
Spring Modulith 적용
dependency 추가
dependencies {
// spring modulith
implementation 'org.springframework.modulith:spring-modulith-starter-core'
}
dependencyManagement {
imports {
mavenBom "org.springframework.modulith:spring-modulith-bom:#{springModulithVersion}"
}
}
Code 작성 가이드
- 도메인 기준으로 패키지를 분리한다.
- 외부 모듈과 연동할 기능만 공개하고 나머지는 모두 Encapsulation.
- 모듈간 순환 참조 금지
- 모듈안에 서브 모듈 참조 금지
Unit Test로 검증 가능
class ModularityTests {
ApplicationModules modules = ApplicationModules.of(Application.class);
@Test
void verifiesModularStructure() {
modules.verify();
}
@Test
void createModuleDocumentation() {
new Documenter(modules).writeDocumentation();
}
}
참고
https://docs.spring.io/spring-modulith/reference/1.1/
'dev > spring' 카테고리의 다른 글
[Spring] Spring Framework CDS(Class Data Sharing) (Project Leyden) (0) | 2024.06.06 |
---|---|
REST Assured로 API 테스트하기 (0) | 2024.06.03 |
Spring Framework - Runtime efficiency with String (today and tomorrow) (0) | 2024.06.02 |
Ehcache Annotations for Spring (0) | 2010.08.05 |
HiddenHttpMethodFilter (0) | 2010.06.24 |