본문 바로가기
프로그래밍/SPRING

[스프링 기본 : IoC 컨테이너 ] IoC 컨테이너 와 빈

by hyunleeM 2019. 10. 6.

IoC (Inversion of Control, 제어의 역전)

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

즉 인스턴스의 생성부터 소멸까지의 생명주기를 개발자가 아닌 컨테이너가 대신 해준다는 뜻

 

스프링 IoC/DI 컨테이너

BeanFactory : 스프링의 컨테이너 기능을 담당

  •  스프링의 설정 파일에 등록된 bean 객체를 관리하는 가장 기본적인 컨테이너 기능 제공
  • 컨테이너가 구동될 때 객체를 생성하는 것이 아닌 클라이언트의 요청에 의해서만 객체를 생성(lazy loading)

어플리케이션 컴포넌트의 중앙저장소

빈 설정 소스(XML, Java config..)로 부터 빈 정의를 읽어 들이고, 빈을 구성하고 제공.

https://jjunii486.tistory.com/84

자바 빈 

데이터를 표현하는 것을 목적으로 하는 자바클래스(클래스에 값을 저장하는 속성필드, get, set 메솓, 기본생성자 포함)

 

스프링 빈

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

장점

  • 의존성관리
  • 스코프
    • singleton : 기본
    • prototype : 어플리케이션 요청시 마다 스프링이 새 인스턴스 생성
    • request : HTTP요청별로 인스턴스화 되어 요청이 끝나면 소멸(Spring MVC 용도)
    • session: HTTP 세션별로 인스턴스화 되어 세션이 끝나면 소멸(Spring MVC 용도)
    • global session : 포틀릿 기반의 웹어플리케이션 용도 , 전역세션 스코프의 빈은 같은 스프링 MVC를 사용한 포탈 어플리케이션 내의 모든 포틀릿 사이에 공유 가능
    • thread: 새 스레드 에서 요청하면 새로운 bean인스턴스를 생성, 같은 스레드에선 항상 같은 bean반환
    • custom : org.springframework.beans.factory.config.Scope를 구현하고 커스텀 스코프를 스프링의 설정에 등록하여 사용
  • 라이프 사이클 인터페이스 
    • 객체 생성 -> 의존설정 -> 초기화 -> 소멸

http://blog.naver.com/PostView.nhn?blogId=edy5016&logNo=221280377077

ApplicationContext

BeanFactory 상속받아 기본적인 컨테이너 기능 + 확장 기능 제공

확장한 기능

  • 메시지 소스 처리 기능(i18n)
  • 이벤트 발행기능
  • 리소스 로딩 기능
  • 트랜잭셩 관리
  • 등등..

컨테이너의 구동되는 시점에 bean에 등록되어 있는 클래스를 객체화하는 즉시 로딩 방식.

ApplicationContext 와 BeanFactory 로딩 차이

 

 

 

참고자료

https://www.inflearn.com/course/spring-framework_core

 

스프링 프레임워크 핵심 기술 - 인프런

이번 강좌는 스프링 부트를 사용하며 스프링 핵심 기술을 학습합니다 따라서 스프링 부트 기반의 프로젝트를 사용하고 있는 개발자 또는 학생에게 유용한 스프링 강좌입니다. 초급 웹 개발 Java Spring 온라인 강의

www.inflearn.com

https://jjunii486.tistory.com/84

 

스프링 기초] 컨테이너와 IoC (Inversion of Control, 제어의 역전) 란?

웹개발을 배우면서 항상 개념에 대한 부분이 너무 어렵고 공부를 하고 나면 까먹고 또 까먹는다. 컨테이너 또한 JAVA 기초와 함께 MVC를 배우면서 배웠으나 또 까먹었다...그런데 스프링에서도 컨테이너가 나온다...

jjunii486.tistory.com

https://javaslave.tistory.com/45

 

Spring Bean Scope 정리

Spring Bean Scope 스프링에서 Bean으로 지정된 객체는 기본적으로 싱글톤 객체로 관리된다. 하지만 요구사항 과 구현기능 등의 필요에 따라서 비싱글톤이 필요한 경우도 많다. 스프링에서는 이를 명시적으로 구분..

javaslave.tistory.com

http://blog.naver.com/PostView.nhn?blogId=edy5016&logNo=221280377077

 

스프링 빈 객체의 라이프사이클

스프링 컨테이너는 빈 객체를 생성하고, 프로퍼티를 할당하고, 초기화를 수행하고 사용이 끝나면 소멸시키...

blog.naver.com

 

댓글