녕의 학습 기록

[Spring 기본] 객체 지향 원리 적용 (2) 본문

Dev/Spring

[Spring 기본] 객체 지향 원리 적용 (2)

kjyyjk 2022. 10. 31. 01:30

 학습 내용 

 

AppConfig를 통한 관심사의 분리


* AppConfig

 

애플리케이션 전체 동작방식을 구성(configuration) / 설정한다.

 

구현 객체를 생성하고 연결

 

어디선가 AppConfig를 통해 memberService()를 호출하면 구현체를 넣은 상태로 구현 객체를 생성한다.

 

* 생성자 주입

 

생성자 주입 == 생성자를 통해 객체를 주입시킨다

생성자를 통해 넘어온 객체를 자기 자신에게 주입한다.

이전과는 달리 오로지 인터페이스에 대한 내용만 있음.

 

즉, 추상화에만 의존하였고 DIP를 지키고 있다.

 

의존 관계에 대한 고민은 외부(AppConfig)에 맡기고 실행에만 집중

 

객체의 생성과 연결은 AppConfig가 담당한다

객체를 생성하고 연결하는 역할과 실행하는 역할이 구분되었다.

= > 관심사의 분리

 

* AppConfig 실행

 

AppConfig의 memberService()를 호출하여 Memory저장소 구현체를 가진 멤버 서비스 구현객체를 받는다

기존에는 MemberServiceImpl을 직접 생성하고 그 MemberServiceImpl이 또 저장소 구현체를 생성했지만,

 

이제는 AppConfig를 통해 생성하고 주입 받는다

 

즉, AppConfig가 객체 생성과 어떤 객체를 할당할지를 담당한다.

 

테스트 코드도 수정

- @BeforeEach

 

각 테스트 실행 이전에 해당 내용을 매번 실행한다

 

appConfig는 메모리 구현객체를 생성하고 그 값을 멤버 서비스 구현 객체를 생성하며 생성자로 전달한다

 

클라이언트 입장인 멤버서비스구현 입장에서는 의존관계를 외부에서 주입해주는 느낌

 

== DI (Dependency Injection) == 의존관계 주입

 

여기까지 AppConfig를 통해 관심사를 확실하게 분리했다.(객체 생성, 주입 / 실행)

 


 다음 학습 내용 

 

AppConfig의 문제점을 알아보고 더 나은 방향으로의 리팩터링

 

 

 

스프링 핵심 원리 - 기본편 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com