Spring IoC Container & Bean

tiki·2021년 5월 31일
0

Spring

목록 보기
1/1
post-thumbnail

스프링 프로젝트를 하다보면 제일 먼저 그리고 여러번 만나게될 개념은

바로 IoC Container, DI(의존성 주입), Bean입니다.

IoC 컨테이너

IoC, 컨테이너란?

  • Inverse of Control : 제어권의 역전, -> 객체의 생성, 라이프사이클을 개발자가 직접 하는 것이 아니라 spring의 컨테이너가 직접 다 생성 및 관리 해주는다는 것이다.

  • POJO(Plain old java object) : 특정 플랫폼이나 규약에 제약 받지 않는 일반적인 자바 객체를 생성, 초기화, 서비스 소멸에 대한 권한을 가진다.

  • 의존 관계 주입(Dependency injection)이라고 하며
    어떤 객체가 사용하는 의존 객체를 직접 만들어서 사용하는 것이 아니라 주입을 받아서 사용한다는 것이다.

  • 애플리케이션 컴포턴트의 중앙 저장소이며 이 컨테이너에 들어가는 객체를 우리는 Bean이라고 부른다. 그리하여 IoC 컨테이너는 빈 설정 소스로 부터 빈 정의를 읽어들이고, 빈을 미리 구성하고 제공한다.

활용방법

  • 개발자들은 단지 빈 설정파일에서 의존관계가 필요하다는 정보를 추가해주면 된다.(XML, annotation을 이용하여)

  • IoC 컨테이너에 Bean이라는 객체를 담아서 프로젝트내에서 필요한 부분에 생성자를 통하여 주입받아서 사용하게 될것이다.

  • 스프링의 빈 팩토리와 애플리케이션 컨텍스트는 각각 기능을 대표하는 BeanFactory와 ApplicationContext라는 두 개의 인터페이스로 정의되어 있다. ApplicationContext 인터페이스는 BeanFactory 인터페이스를 상속한 서브인터페이스다.

Bean

Bean 이란?

  • 스프링 IoC 컨테이너가 제공하는 객체

Bean을 사용하는 이유

  • 의존성 관리(spring의 객체들은 서로의 의존성 때문에 단일 테스트하기 어려운 환경에 있다. 하지만 spring Bean을 사용하게 된다면 새로운 기능에 대한 단일 테스트에 필요한 다른 객체들을 IoC 컨테이너에 있는 Bean 객체로 받아들이면서 그 객체들이 가지고 있던 의존성이 주입이 된다.)
  • 라이프사이클 인터페이스를 통하여 부가적인 기능을 만들 수 있다.
  • 싱글톤(singleton)이다.

싱글톤 vs 프로토타입

싱글톤은 어플리케이션내에서 여러번 필요한 객체를 IoC 컨테이너에서 하나만 미리 생성하여 관리 및 활용하는 것이다.

프로토타입은 매번 같은 역할을 하는 다른 객체를 생성하는 것이다.

싱글톤의 장점

  • 싱글톤 방식을 활용한다면 메모리와 런타임에 대한 성능 최적화가 좋다.
profile
하루하루 조금씩 발전하려는 개발자 입니다.

0개의 댓글