개발 중..
순환참조 늪에 빠지게되었다.
업무 서비스: PDF ConvertorService 참조
PDF ConvertorService: 업무 서비스 참조
.. 순환참조
어떻게 해결할까 고민하다가
pub sub design pattern 적용하면 될 것 같다는 생각이 들었다.
1. ConvertorEvent
@Getter
@Builder
public class ConvertorEvent {
private ConvertorDTO convertorDTO;
public static ConvertorEvent doConvertor(ConvertorDTO convertorDTO) {
return ConvertorEvent.builder().ConvertorDTO(convertorDTO).build();
}
}
2. ConvertorPublisher
@Component
@RequireArgsConstructor
publid class ConvertorEventPublisher {
private final ApplicationEventPublisher applicationEventPublisher;
public void doConvertor(ConvertorEvent convertorEvent) {
applicationEventPublisher.publishEvent(convertorEvent);
}
}
3. 이벤트 발생(업무서비스)
@RequiredArgsConstructor
@Service
public class TestServiceImpl implements TestService {
private final ConvertorEventPublisher convertorEventPublisher;
@Override
publid void test() {
ConvertorDTO dto = ConvertorDTO.builder().id("1").build();
ConvertorEvent convert = ConvertorEvent.doConvertor(dto);
convertorEventPublisher.doConvertor(convert);
}
}
4. PDF ConvertorService(이벤트 구독)
@RequiredArgsConstructor
@Service
public class ConvertorServiceimpl implements ConvertorService {
@EventListener
public void doConvertor(ConvertorEvent convertorEvent) {
///... logic
}
}
이벤트 발생 후 여러 서비스에서 로직을 구현할떄 유용할 것 같다.
다음에도 써먹을 수 있 겠지?
'JAVA' 카테고리의 다른 글
AxonFramework와 kafka를 활용한 게시판 서비스 구현하기.(feat Spring Boot) (1) | 2023.03.24 |
---|---|
AXON Framework 구현 방법 (1) | 2023.02.24 |
웹 스크래퍼, 크롤링 Java 구현 (0) | 2023.02.08 |
JAVA SE vs JAVA EE 개념 (0) | 2022.07.25 |
서블릿(Servlet)이 뭐지..? (0) | 2022.07.22 |