주요글: 도커 시작하기
반응형

애그리것의 메서드를 실행할 때 도메인 서비스 객체를 파라미터로 전달한다는 것은 애그리것이 도메인 서비스에 의존한다는 것을 뜻한다. 스프링의 DI와 AOP를 공부하다보면 애그리것이 의존하는 도메인 서비스를 의존 주입으로 처리하고 싶어질 수 있다. 관련 기술에 빠져 있으면 특히 그렇다. 프레임워크가 제공하는 의존 주입 기능을 사용해서 도메인 서비스를 애그리것에 주입해야 기술적으로 나은 것 같은 착각도 한다.


하지만, 이는 좋은 방법이 아니다. 의존 주입을 하기 위해 애그리것 루트 엔티티에 도메인 서비스에 대한 참조를 필드로 추가했다고 하자.


public class Order {

    @Autowired

    private DiscountCalculationService discountCalculationService;

    …

}


도메인 객체는 필드(프로퍼티)로 구성된 데이터와 메서드를 이용한 기능을 이용해서 개념적으로 하나인 모델을 표현한다. 모델의 데이터를 담는 필드는 모델에서 중요한 구성 요소이다. 그런데, discountCalculationService 필드는 데이터 자체와는 관련이 없다. Order 객체를 DB에 보관할 때 다른 필드와는 달리 저장 대상도 아니다.


또 Order가 제공하는 모든 기능에서 discountCalculationService를 필요로 하는 것도 아니다. 일부 기능만 필요로 한다. 일부 기능을 위해 굳이 도메인 서비스 객체를 애그리것에 의존 주입할 이유는 없다. 이는 프레임워크의 기능을 사용하고 싶은 개발자의 욕심을 채우는 것에 불과하다.



+ Recent posts