
스프링 컨테이너 생성 스프링 컨테이너의 생성 과정 1. 스프링 컨테이너 생성 2. 스프링 빈 등록 빈 이름 3. 스프링 빈 의존관계 설정 - 준비 4. 스프링 빈 의존관계 설정 - 완료 참고 스프링은 빈을 생성하고, 의존관계를 주입하는 단계가 나누어져 있다. 그런데 이렇게 자바 코드로 스프링 빈을 등록하면 생성자를 호출하면서 의존관계 주입도 한번에 처리된다. 여기서는 이해를 돕기 위해 개념적으로 나누어 설명했다. 자세한 내용은 의존관계 자동 주입에서 다시 다룬다. 정리* 스프링 컨테이너를 생성하고, 설정(구성) 정보를 참고해서 스프링 빈도 등록하고, 의존관계도 설정했다. 이제 스프링 컨테이너에서 데이터를 조회해보겠다.

스프링으로 전환하기 지금까지 순수한 자바 코드만으로 DI를 적용했다. 이제 스프링을 사용한다. AppConfig 스프링 기반으로 변경 package inflearn.spring_core.config; import inflearn.spring_core.discount.DiscountPolicy; import inflearn.spring_core.discount.RateDiscountPolicy; import inflearn.spring_core.member.MemberRepository; import inflearn.spring_core.member.MemberService; import inflearn.spring_core.member.MemberServiceImpl; import inflearn.spr..

새로운 구조와 할인 정책 적용 정액 할인 정책을 정률% 할인 정책으로 변경해보자. FixDiscountPolicy => RateDiscountPolicy AppConfig의 등장으로 애플리케이션이 크게 사용 영역과, 객체를 생성하고 구성(Configuration)하는 영역으로 분리되었다. 그림 - 사용, 구성의 분리 그림 - 할인 정책의 변경 변경한 코드 // 애플리케이션의 전체 동작 방식을 구성(config)하기 위해, 구현 객체를 생성하고, 연결하는 책임을 가지는 별도의 설정 클래스 public class AppConfig { //역할들을 드러나게 바꾼다! // ctrl alt M public MemberService memberService() { return new MemberServiceImpl..

AppConfig 리팩터링 현재 AppConfig를 보면 중복이 있고, 역할에 따른 구현이 잘 보이지 않는다. 기대하는 그림 AppConfig 리펙토링 // 애플리케이션의 전체 동작 방식을 구성(config)하기 위해, 구현 객체를 생성하고, 연결하는 책임을 가지는 별도의 설정 클래스 public class AppConfig { //역할들을 드러나게 바꾼다! // ctrl alt M public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discou..

상황 가정 애플리케이션을 하나의 공연이라 생각해보자. 각각의 인터페이스를 배역(배우 역할)이라 생각하자. 그런데! 실제 배역 맞는 배우를 선택하는 것은 누가 하는가? 로미오와 줄리엣 공연을 하면 로미오 역할을 누가 할지 줄리엣 역할을 누가 할지는 배우들이 정하는게 아니다. 이전 코드는 마치 로미오 역할(인터페이스)을 하는 레오나르도 디카프리오(구현체, 배우)가 줄리엣 역할(인터페이스)을 하는 여자 주인공(구현체, 배우)을 직접 초빙하는 것과 같다. 디카프리오는 공연도 해야하고 동시에 여자 주인공도 공연에 직접 초빙해야 하는 **다양한 책임**을 가지고 있다. 관심사 분리 AppConfig 등장 애플리케이션의 전체 동작 방식을 구성(config)하기 위해, 구현 객체를 생성하고, 연결하는 책임을 가지는 별..