더북(TheBook)

4.4.4 OrderServiceConfiguration 클래스

주문 서비스는 스프링 프레임워크를 사용합니다. 예제 4-7은 OrderServiceConfiguration 클래스 코드의 일부입니다. 클래스 선언부에 @Configuration을 붙인 스프링 빈 구성 클래스입니다.

예제 4-7 OrderserviceConfiguration은 Orderservice의 스프링 빈이 정의된 구성 클래스다

@Configuration
public class OrderServiceConfiguration {

  @Bean
  public OrderService orderService(RestaurantRepository restaurantRepository,
    ...
    SagaManager<CreateOrderSagaState> createOrderSagaManager,
  ...) {
    return new OrderService(restaurantRepository,
      ...
      CreateOrderSagaManager
      ...);
  }

  @Bean
  public SagaManager<CreateOrderSagaState> createOrderSagaManager(
    CreateOrderSaga saga) {
    return new SagaManagerImpl<>(saga);
  }

  @Bean
  public CreateOrderSaga createOrderSaga(OrderServiceProxy orderService,
    ConsumerServiceProxy consumerService, ...) {
    return new CreateOrderSaga(orderService, consumerService, ...);
  }

  @Bean
  public OrderCommandHandlers orderCommandHandlers() {
    return new OrderCommandHandlers();
  }

  @Bean
  public SagaCommandDispatcher orderCommandHandlersDispatcher(
    OrderCommandHandlers orderCommandHandlers) {
    return new SagaCommandDispatcher("orderService",
      orderCommandHandlers.commandHandlers());
  }

  @Bean
  public KitchenServiceProxy kitchenServiceProxy() {
    return new KitchenServiceProxy();
  }

  @Bean
  public OrderServiceProxy orderServiceProxy() {
    return new OrderServiceProxy();
  }

  ...
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.