Kim-Baek 개발자 이야기

[백기선 - 스프링 프레임워크 핵심 기술] IoC 컨테이너 1부: 스프링 IoC 컨테이너와 빈 본문

개발/Spring

[백기선 - 스프링 프레임워크 핵심 기술] IoC 컨테이너 1부: 스프링 IoC 컨테이너와 빈

김백개발자 2020. 9. 21. 23:45
인프런에서 백기선 님의 [스프링 프레임워크 핵심 기술] 을 듣고 정리한 내용입니다

 

Inversion of Control: 의존 관계 주입(Dependency Injection)이라고도 하며, 어떤 객체가 사용하는 ​의존 객체를 직접 만들어 사용하는게 아니라, 주입 받아 사용하는 방법​​을 말 함.

- 추가적으로 토비의 스프링에서의 설명

어떤 프로그램을 만들 때, 각 기능들을 만들어 두더라도 이 기능들이 필요에 따라 순서대로 작동하지 않는다면 그 프로그램은 제대로 작동할 수 없습니다. 따라서 각 기능들이 순서대로 작동하게 하기 위해서 제어(Control)가 필요합니다.

위에서 이야기한 제어할 항목들이 적다면 프로그래머가 기능의 순서를 알고 관리할 수 있습니다. 하지만 기능들이 늘어나서 수천, 수만개의 제어할 항목들이 생긴다면 이를 관리하는 것은 불가능에 가까워집니다. 따라서 이 제어를 프레임워크가 관리 하는 것을 역전(Inversion)이라고 합니다.

 

프레임워크에서의 사용

토비의 스프링에 따르면 프레임워크를 이해하기 위해서는 라이브러리와 프레임워크가 어떻게 다른지 이야기를 하며 제어의 역전에 대해 언급합니다.

라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다. 단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용할 뿐이다. 반면에 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용된다. 프레임워크는 분명한 제어의 역전 개념이 적용되어 있어야 합니다.

라이브러리는 개발자가 단순히 필요한 기능이 있다면, 라이브러리를 사용하고

이 기능들이 순서대로 사용할 수 있도록 하기위해 프레임워크에는 제어의 역전개념이 있어야 한다고 이야기합니다.

 

 

스프링 IoC 컨테이너

  • BeanFactory

  • 애플리케이션 컴포넌트의 중앙 저장소.

  • 빈 설정 소스​​로 부터 ​빈 정의​​를 읽어들이고, ​빈을 구성하고 제공​​한다.

  • 스프링 IoC 컨테이너가 관리 하는 객체.

  • 장점

    •  

      의존성관리 -> 의존성을 주입 받기 때문에 테스트가 쉬워 진다

    • 스코프

      • 싱글톤: 하나

      • 프로포토타입: 매번 다른 객체 

      • 라이프사이클 인터페이스

 

ApplicationContext - BeanFactory의 구현체이나 더 많은 기능을 가지고 있음

  • BeanFactory

  • 메시지 소스 처리 기능 (i18n)

  • 이벤트 발행 기능

  • 리소스 로딩 기능

  •  ...

반응형
Comments