애플리케이션 조립
모든 의존성은 안쪽으로, 애플리케이션의 도메인 코드 방향으로 향해야 도메인 코드가 바깥 계층으로부터 안전하다!
설정 컴포넌트
유스케이스는 인터페이스만 알아야 하고, 런타임에 이 인터페이스의 구현을 제공받아야 한다.
이를 위해 모든 클래스에 대한 의존성을 가지는 Configuration Component가 존재해야 한다.
💐 역할
웹 어댑터 인스턴스 생성
HTTP 요청이 실제로 웹 어댑터로 전달되도록 보장
유스케이스 인스턴스 생성해 웹 어댑터에게 제공
영속성 어댑터 인스턴스 생성해 유스케이스에게 제공
영속성 어댑터가 실제 DB에 접근할 수 있도록 보장
설정 파라미터 소스에 접근 가능해야 한다 </aside>
클래스패스 스캐닝
애플리케이션 컨텍스트: 스프링 프레임워크를 이용해 애플리케이션을 조립한 결과물, 애플리케이션을 구성하는 모든 객체(Bean)를 포함
클래스패스 스케닝: 애플리케이션 컨텍스트를 조립하기 위한 방법
@Component
어노테이션을 붙이고 모든 필드를 인자로 받는 생성자가 존재하는 클래스는 애플리케이션 컨텍스트에 추가된다.클래스에 프레임워크 특화적인 어노테이션을 붙여야 하므로 결합도가 높아진다. 이는 라이브러리나 프레임워크 개발할 경우 사용자가 의존성에 엮이게 되어 좋지 않다.
스프링 Config
@Configuration
어노테이션 사용해 이 클래스가 스프링의 클래스패스 스캐닝에서 발견해야 할 설정 클래스임을 알림모든 빈을 가져오는 대신, 설정 클래스만 선택
@EnableJpaRepositories
어노테이션 사용 시 정의해두었던 모든 스프링 데이터 repository interface의 구현체를 제공configuration 클래스도 모듈마다 작성할 수 있다
특정 모듈을 위한 설정 클래스를 만들면, 특정 모듈만 포함하고 다른 모듈의 빈은 모킹해 애플리케이션 컨텍스트 생성이 가능해 테스트에 용이
Last updated