클래스들을 인스턴스화하고 묶기 위해 평범한 자바, 스프링, 스프링 부트 프레임워크에서 어떻게 의존성 주입 매커니즘을 이용하는지 살펴본다.

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

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

이 프로그래밍 스타일의 유익한 부수효과 중 하나는 테스트하기 쉽다는 것이다. 한 클래스가 필요로 하는 모든 객체를 생성자로 전달할 수 있따면 실제 객체 대신 목으로 전달할 수 있고, 격리된 단위 테스트를 생성하기 쉬워진다.

의존성 규칙을 어기지 않고 객체 인스턴스를 생성할 책임을 부가하기 위해 설정 컴포넌트가 있어야 한다.

**설정 컴포넌트(configuration component)**의 역할

Untitled

설정 컴포넌트는 설정 파일이나 커맨드라인 파라미터 등과 같은 설정 파라미터의 소스에도 접근할 수 있어야 하는데, 애플리케이션이 조립되는 동안 설정컴포넌트는 이러한 파라미터를 애플리케이션 컴포넌트에 제공해서 행동 양식을 제어하기 때문이다.

단일 책임 원칙을 위반하지만, 애플리케이션의 나머지 부분을 깔끔하게 유지하기 위해 구성요소들을 연결하는 바깥쪽 컴포넌트가 필요하다.