시스템 간 강결합의 문제


이벤트 관련 구성요소

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a5e5008f-6c08-4514-83f3-f3ae11015b25/Untitled.png


이벤트의 구성

// 주문 배송지 변경에 대한 이벤트 디스패처 예제
@Getter
@AllArgsConstructor
public class ShippingInfoChangedEvent {

	private final String orderNumber;
	private final long timeStamp;
	private final ShippingInfo newShippingInfo;

}

public class OrderChangeService {
	
	@EventListener
	public void ShippingInfoChange(ShippingInfoChangedEvent event) {
		Order order = orderRepository.findByOrderNumber(event.getOrderNumber());
		order.ShippingInfoChange(event.getNewShippingInfo(), event.getTimeStamp());
	}

}