개요
스프링 컨테이너는 무엇이고 의존관계 주입이 어떤 과정을 통해 일어나는지 알아보자.
전략패턴과 같이 ObjectFactory에서 사용할 전략 (환율 정책)등을 선택하여 주입시켜 준다.
기존 PaymentService가 제어권(어떤 환율 정책을 가질 것인지)을 가지고 있었는데 ObjcetFactory나 Client를 통해
어떤 환율정책을 가질지 제어권을 넘겼다. → 제어의 역전 (IoC)
Spring에서는 ObjectFactory가 → BeanFactory가 된다.
Bean은 뭘까?
Spring의 Object라고 보면 된다. (PaymentService, WebApiExRateProvider 등이 Bean이 된다)
Class로 만든 PaymentService와 WebApiExRateProvicder는
구성정보 ObjectFactory를 통해서 스프링 컨테이너에 등록
클래스와 구성정보 Configuration이 합쳐지면 스프링 컨테이너에서 빈으로 등록하여 어플리케이션 메모리에 올려놓는다.
스프링은 Configuration을 바탕으로
new Component();를 해도 싱글톤을 보장한다.