유스케이스, 웹 어댑터, 영속성 어댑터를 구현했으니 이제 애플리케이션을 조립할 차례다.

애플리케이션이 시작될 때 클래스를 인스턴스화하고 묶기 위해서 의존성 주입 메커니즘을 이용한다.

이번 장에서는 평범한 자바로 이를 어떻게 하는지, 그리고 스프링&스프링부트에서는 이를 어떻게 하는지 살펴보자

왜 조립까지 신경써야 할까?


왜 유스케이스와 어댑터를 그냥 필요할 때 인스턴스화하면 안 되는 걸까?

→ 코드 의존성이 올바른 방향을 가리키게 하기 위해서이다.

모든 의존성은 안쪽으로, 애플리케이션의 도메인 코드 방향으로 향해야 도메인 코드가 바깥 계층의 변경으로부터 안전하다는 점을 기억하자.

유스케이스가 영속성 어댑터를 호출해야 하고, 스스로 인스턴스화한다면?

: 코드 의존성이 잘못된 방향으로 만들어진 것이다. ⇒ 이것이 바로 아웃고잉 포트 인터페이스를 생성한 이유다.

: 유스케이스는 인터페이스만 알아야 하고, 런타임에 이 인터페이스의 구현을 제공받아야 한다.

이 프로그래밍 스타일의 유익한 부수효과 중 하나는 코드를 훨씬 더 테스트하기 쉽다는 것이다.