반응형
프로젝트를 진행하면서 우리는 MSA 아키텍처 기반의 프로젝트이므로 다른 모듈에서 DTO를 참조할 수 있도록 각 서비스마다 DTO 모듈을 따로 만들어서 참조하도록 하였다.
그런데 order 서비스의 server 모듈과 dto 모듈에서 서로를 참조하게 되었는데, 오류가 났다!
`순환 종속성` 때문에 난 오류였다. 이를 해결하기 위해 서로에 대한 의존성을 제거해야 했다.
서로를 참조하게 된 이유는, 이런 식으로 dto 모듈에 있는 DTO들을 Order 객체를 받아서 만들기 위해 참조한 것이었다.
public static NotificationOrderDto from(Order order, String displayProductName) {
return new NotificationOrderDto(order.getOrderId(), order.getUserId(),
order.getState().getDescription(), displayProductName, order.getTotalQuantity());
}
이 문제를 해결하기 위해 `Mapper 클래스`를 만들기로 했다. 일반적으로 매퍼 클래스는 비즈니스 로직을 포함하지 않고 단순히 변환을 수행하므로, 도메인 모델에서 DTO로 데이터를 추출하거나, DTO에서 도메인 객체로 데이터를 주입하는 역할만 수행한다.
그래서 order의 service 패키지 안에 mapper 패키지를 만들어 OrderMapper 클래스를 생성하였다.
public class OrderMapper {
public static NotificationOrderDto toNotificationOrderDto(Order order, String displayProductName) {
return new NotificationOrderDto(order.getOrderId(), order.getUserId(),
order.getState().getDescription(), displayProductName, order.getTotalQuantity());
}
}
짠~~ 이렇게 해결 !
Mapper 클래스 좋은 것 같다 앞으로 잘 활용해봐야지
반응형
'공부 > Project' 카테고리의 다른 글
Springboot 쿠폰 발급 동시성 테스트 데드락 문제 발생 (MySQL InnoDB, FK 참조 레코드..) (1) | 2024.12.26 |
---|---|
작업 환경 전환 시 Git 을 활용한 임시 커밋 처리 (0) | 2024.11.19 |
웹 프로젝트 서버 배포 흐름도 (0) | 2024.09.25 |
Spring Cloud FeignClient N+1 호출 문제 해결하기 (0) | 2024.09.23 |
Gateway, Spring Security, JWT 사용하여 인증 및 인가 처리하기 (0) | 2024.09.22 |